Changelog
git pull mojaloop gh-pages --rebase
echo "Copying contents of _book to root..."
cp -R _book/* .
-echo "Cleaning up **/*.md files..."
-find . -name "*.md" -type f -delete
+# echo "Cleaning up **/*.md files..."
+# find . -name "*.md" -type f -delete
# echo "Cleaning up node_modules directory..."
# git clean -fx node_modules
#!/usr/bin/env bash
-# install the plugins and build the static site
+export GIT_BRANCH=$(git branch | grep \* | cut -d ' ' -f2)
+echo "Publishing current branch: $GIT_BRANCH..."
+
+echo "Install npm dependencies..."
npm install
+
+echo "Build gitbook"
npm run gitbook:build
-# checkout to the gh-pages branch
+echo "Checking out gh-pages"
git checkout gh-pages
-# pull the latest updates
+echo "Copying..."
git pull mojaloop gh-pages --rebase
-# copy the static site files into the current directory.
-find . -name "*.md" -type f -delete
+echo "Copying contents of _book to root..."
+cp -R _book/* .
-rm **/*.md
+echo "Cleaning up **/*.md files..."
+find . -name "*.md" -type f -delete
-## remove 'node_modules' and '_book' directory
-#git clean -fx node_modules
-#git clean -fx _book
+# echo "Cleaning up node_modules directory..."
+# git clean -fx node_modules
+# echo "Cleaning up _book directory..."
+# git clean -fx _book
-# add all files
+echo "Staging changes..."
git add .
# commit
-git commit -a -m "Update gh-pages on github"
+git commit -a -m "Update gh-pages on github..."
# push to the origin
git push mojaloop gh-pages
# checkout to the master branch
-#git checkout master
+git checkout $GIT_BRANCH
git checkout gh-pages
git pull mojaloop gh-pages --rebase
# copy the static site files into the current directory.
-cp -R _book/* .
+find . -name "*.md" -type f -delete
rm **/*.md
-# remove 'node_modules' and '_book' directory
-git clean -fx node_modules
-git clean -fx _book
+## remove 'node_modules' and '_book' directory
+#git clean -fx node_modules
+#git clean -fx _book
# add all files
git add .
git pull mojaloop gh-pages --rebase
# copy the static site files into the current directory.
cp -R _book/* .
+rm **/*.md
+
# remove 'node_modules' and '_book' directory
git clean -fx node_modules
git clean -fx _book
#!/usr/bin/env bash
# install the plugins and build the static site
-gitbook install && gitbook build
+npm install
+npm run gitbook:build
# checkout to the gh-pages branch
git checkout gh-pages
gitbook install && gitbook build
git checkout gh-pages
# pull the latest updates
-git pull origin gh-pages --rebase
+git pull mojaloop gh-pages --rebase
# copy the static site files into the current directory.
cp -R _book/* .
git add .
git commit -a -m "Update gh-pages on github"
# push to the origin
-git push origin gh-pages
+git push mojaloop gh-pages
# checkout to the master branch
-git checkout master
+#git checkout master
+#!/usr/bin/env bash
+
+# install the plugins and build the static site
+gitbook install && gitbook build
+
+# checkout to the gh-pages branch
+git checkout gh-pages
+
+# pull the latest updates
+git pull origin gh-pages --rebase
+
+# copy the static site files into the current directory.
+cp -R _book/* .
+
+# remove 'node_modules' and '_book' directory
+git clean -fx node_modules
+git clean -fx _book
+
+# add all files
+git add .
+
+# commit
+git commit -a -m "Update gh-pages on github"
+
+# push to the origin
+git push origin gh-pages
+
+# checkout to the master branch
+git checkout master
# Mojaloop Releases
-A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
+Below you will find more information on the future, current and historical releases for Mojaloop.
-At of March 6th 2019, the active releases for core central services are as below
+Refer to [Versioning Documentation](../contributors-guide/standards/versioning.md) for more information on the release strategy and standards.
## Current Releases
* Helm: [](https://github.com/mojaloop/helm/releases)
At of March 6th 2019, the active releases for core central services are as below
Refer to [Mojaloop Helm Repository](../repositories/helm.md) documentation to find out more information about Helm.
-| Version | Release Date | QA Tested | Link | Notes |
-| --- | :---: | :---: | --- | --- |
-| 6.0.0 | April 2019 | x | | To be released at PI5 Convening in April 2019 |
-| [5.5.0](https://github.com/mojaloop/helm/releases/tag/v5.5.0) | 2019/04/01 | x | https://github.com/mojaloop/helm/releases/tag/v5.5.0 | |
-| [4.4.1](https://github.com/mojaloop/helm/releases/tag/v4.4.1) | 2019/01/31 | x | https://github.com/mojaloop/helm/releases/tag/v4.4.1 | |
+| Version | Release Date | Tested | Notes |
+| --- | :---: | :---: | --- |
+| 6.0.0 | April 2019 | - | To be released at PI5 Convening in April 2019 |
+| [5.5.0](https://github.com/mojaloop/helm/releases/tag/v5.5.0) | 2019/04/02 | - | Sprint release |
+| [5.4.2](https://github.com/mojaloop/helm/releases/tag/v5.4.2) | 2019/03/29 | ✓ | Sprint release |
+| [5.4.1](https://github.com/mojaloop/helm/releases/tag/v5.4.1) | 2019/03/21 | ✓ | Sprint release |
+| [5.4.0](https://github.com/mojaloop/helm/releases/tag/v5.4.0) | 2019/03/19 | ✓ | Sprint release |
+| [5.2.0](https://github.com/mojaloop/helm/releases/tag/v5.2.0) | 2019/02/20 | ✓ | Sprint release |
+| [5.1.3](https://github.com/mojaloop/helm/releases/tag/v5.1.3) | 2019/02/14 | ✓ | Sprint release |
+| [5.1.2](https://github.com/mojaloop/helm/releases/tag/v5.1.2) | 2019/02/11 | ✓ | Sprint release |
+| [5.1.1](https://github.com/mojaloop/helm/releases/tag/v5.1.1) | 2019/02/08 | ✓ | Sprint release |
+| [5.1.0](https://github.com/mojaloop/helm/releases/tag/v5.1.0) | 2019/02/06 | ✓ | Sprint release |
+| [4.4.1](https://github.com/mojaloop/helm/releases/tag/v4.4.1) | 2019/01/31 | ✓ | Released at PI4 Convening in Jan 2019 |
At of March 6th 2019, the active releases for core central services are as below
## Helm Charts Packaged Releases
-Refer to [Mojaloop Helm Repository](../repositories/helm.md) documentation.
+Refer to [Mojaloop Helm Repository](../repositories/helm.md) documentation to find out more information about Helm.
| Version | Release Date | QA Tested | Link | Notes |
| --- | :---: | :---: | --- | --- |
# Table of contents
* [Mojaloop Overview](README.md)
+* [Mojaloop Background](mojaloop-background/README.md)
+ * [Core Scenarios](mojaloop-background/core-scenarios.md)
+ * [Level One Principles](mojaloop-background/level-one-principles.md)
* [Deployment Guide](deployment-guide/README.md)
- * [Current Version](deployment-guide/current-versions.md)
+ * [Releases](deployment-guide/releases.md)
* [Local Setup Linux](deployment-guide/local-setup-linux.md)
* [Local Setup Mac](deployment-guide/local-setup-mac.md)
* [Local Setup Windows](deployment-guide/local-setup-windows.md)
* [API Documentation](contributors-guide/documentation/api-documentation.md)
* [Documentation Style Guide](contributors-guide/documentation/documentation-style-guide.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
-* [Mojaloop Background](mojaloop-background/README.md)
- * [Core Scenarios](mojaloop-background/core-scenarios.md)
- * [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
* [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
# Helm
-The purpose of this document is to provide;
+For more information on [Helm](https://helm.sh/) refer to the following page: [https://helm.sh/](https://helm.sh/)
+
+The purpose of this document is to provide:
* an overview of the current helm charts,
* the hierarchy relationship between the charts,
* the hierarchy of values.
+Refer to [Releases](../deployment-guide/releases.md) for available versions.
+
## Helm Chart Overview
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
-FROM mhart/alpine-node:10.15.1
+ARG PORT=8989
+
+########################
+#### gitbook-builder ###
+########################
+
+FROM node:10.15-alpine as gitbook-builder
+
+ENV PORT $PORT
WORKDIR /opt/gitbook
COPY . /opt/gitbook
-RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
+RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake graphviz ttf-droid ttf-droid-nonlatin curl
+
+ENV PLANTUML_VERSION 1.2019.3
+ENV LANG en_US.UTF-8
+RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o plantuml.jar
RUN npm install
-#
-#RUN apk del build-dependencies
-EXPOSE 8989
+RUN npm run gitbook:build
-RUN npm run gitbook:install
+########################
+#### gitbook-server ####
+########################
+
+FROM node:10.15-alpine as gitbook-server
+
+ENV PORT $PORT
+
+WORKDIR /opt/gitbook
+COPY --from=gitbook-builder /opt/gitbook .
-#RUN npm run gitbook:build
+EXPOSE $PORT
-CMD npm run gitbook:serveNoReload
+CMD npm run express:run
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
* [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
* [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
+ * [POST Participants (batch)](mojaloop-technical-overview/account-lookup-service/als-post-participants-batch.md)
+ * [DEL Participants](mojaloop-technical-overview/account-lookup-service/als-del-participants.md)
* [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
* [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [Helm](repositories/helm.md)
* [Project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
+* [Glossary of Terms](glossary.md)
* [Changelog](changelog.md)
Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.d
* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
+### Versions
+
+| Version | Info | Release Date |
+| --- | --- | --- |
+| 1.0 | Initial release | 2018-11-01 |
+| | | |
+
## ALS Oracle API
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
Notes:
- `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- `GET /participants` response body returns a list of Participants, containing `currency`.
- `POST /participants` request body includes the `currency` as part of each record.
+
+### Versions
+
+| Version | Info | Release Date |
+| --- | --- | --- |
+| 1.1 | `PUT /participants/{Type}/{ID}` returns a `HTTP 204 - No Content on success`. This was previously returned `HTTP 200 - Success` `POST /participants` now returns a list a `partyList` either containing a `PartyIdInfo` or `ErrorInformation`. This is alignment to the Mojaloop Specification. | 2019-03-28 |
+| 1.0 | Initial release | 2019-03-08 |
+| | | |
\ No newline at end of file
+---
+showToc: false
+---
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Summary
| Path | Operation | Description |
|---|---|---|
| /participants | POST |
Batch create participant information |
| /participants/{Type}/{ID} | DELETE |
Delete participant information |
| GET |
Look up participant information |
|
| POST |
Create participant information |
|
| PUT |
Return participant information |
Paths
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types: application/json
| Name | Description | Type | Data Type | Annotation |
|---|---|---|---|---|
| accept | The Accept header field indicates the version of the API the client would like the server to use. |
header | string | |
| content-type | The Content-Type header indicates the specific version of the API used to send the payload body. |
header | string | |
| date | The Date header field indicates the date when the request was sent. |
header | string | |
| fspiop-source | The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature). |
header | string | |
| content-length | The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes) |
header | integer (int32) | |
| x-forwarded-for | The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For. |
header | string | |
| fspiop-destination | The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes. |
header | string | |
| fspiop-encryption | The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request. |
header | string | |
| fspiop-signature | The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature. |
header | string | |
| fspiop-uri | The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document. |
header | string | |
| fspiop-http-method | The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document. |
header | string |
application/json
- 201 Created
-
Created
Name Description Data Type - 400 Bad Request
-
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
- 401 Unauthorized
-
Unauthorized - The request requires authentication in order to be processed.
- 403 Forbidden
-
Forbidden - The request was denied and will be denied in the future.
- 404 Not Found
-
Not Found - The resource specified in the URI was not found.
- 405 Method Not Allowed
-
Method Not Allowed - An unsupported HTTP method for the request was used.
- 406 Not Acceptable
-
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
- 501 Not Implemented
-
Not Implemented - The server does not support the requested service. The client should not retry.
- 503 Service Unavailable
-
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
| Name | Description | Type | Data Type | Annotation |
|---|---|---|---|---|
| accept | The Accept header field indicates the version of the API the client would like the server to use. |
header | string | |
| Type | The type of lookup being requested, this can be MSISDN, bankAccount etc. |
path | string | |
| ID | The ID related to the Type, if MSISDN then this is the mobile number being requested |
path | string | |
| Currency | The Currency code applicable to the ID being requested |
query | string | |
| SubId | The SubId related to the ID, or the Type |
query | string | |
| content-type | The Content-Type header indicates the specific version of the API used to send the payload body. |
header | string | |
| date | The Date header field indicates the date when the request was sent. |
header | string | |
| fspiop-source | The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature). |
header | string | |
| x-forwarded-for | The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For. |
header | string | |
| fspiop-destination | The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes. |
header | string | |
| fspiop-encryption | The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request. |
header | string | |
| fspiop-signature | The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature. |
header | string | |
| fspiop-uri | The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document. |
header | string | |
| fspiop-http-method | The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document. |
header | string |
application/json
- 204 No Content
-
No Content
Name Description Data Type - 400 Bad Request
-
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
- 401 Unauthorized
-
Unauthorized - The request requires authentication in order to be processed.
- 403 Forbidden
-
Forbidden - The request was denied and will be denied in the future.
- 404 Not Found
-
Not Found - The resource specified in the URI was not found.
- 405 Method Not Allowed
-
Method Not Allowed - An unsupported HTTP method for the request was used.
- 406 Not Acceptable
-
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
- 501 Not Implemented
-
Not Implemented - The server does not support the requested service. The client should not retry.
- 503 Service Unavailable
-
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
| Name | Description | Type | Data Type | Annotation |
|---|---|---|---|---|
| accept | The Accept header field indicates the version of the API the client would like the server to use. |
header | string | |
| Type | The type of lookup being requested, this can be MSISDN, bankAccount etc. |
path | string | |
| ID | The ID related to the Type, if MSISDN then this is the mobile number being requested |
path | string | |
| Currency | The Currency code applicable to the ID being requested |
query | string | |
| SubId | The SubId related to the ID, or the Type |
query | string | |
| content-type | The Content-Type header indicates the specific version of the API used to send the payload body. |
header | string | |
| date | The Date header field indicates the date when the request was sent. |
header | string | |
| fspiop-source | The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature). |
header | string | |
| x-forwarded-for | The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For. |
header | string | |
| fspiop-destination | The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes. |
header | string | |
| fspiop-encryption | The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request. |
header | string | |
| fspiop-signature | The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature. |
header | string | |
| fspiop-uri | The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document. |
header | string | |
| fspiop-http-method | The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document. |
header | string |
application/json
- 200 OK
-
OK
Name Description Data Type Content-Length string - 400 Bad Request
-
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
- 401 Unauthorized
-
Unauthorized - The request requires authentication in order to be processed.
- 403 Forbidden
-
Forbidden - The request was denied and will be denied in the future.
- 404 Not Found
-
Not Found - The resource specified in the URI was not found.
- 405 Method Not Allowed
-
Method Not Allowed - An unsupported HTTP method for the request was used.
- 406 Not Acceptable
-
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
- 501 Not Implemented
-
Not Implemented - The server does not support the requested service. The client should not retry.
- 503 Service Unavailable
-
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types: application/json
| Name | Description | Type | Data Type | Annotation |
|---|---|---|---|---|
| accept | The Accept header field indicates the version of the API the client would like the server to use. |
header | string | |
| Type | The type of lookup being requested, this can be MSISDN, bankAccount etc. |
path | string | |
| ID | The ID related to the Type, if MSISDN then this is the mobile number being requested |
path | string | |
| content-type | The Content-Type header indicates the specific version of the API used to send the payload body. |
header | string | |
| date | The Date header field indicates the date when the request was sent. |
header | string | |
| fspiop-source | The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature). |
header | string | |
| x-forwarded-for | The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For. |
header | string | |
| fspiop-destination | The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes. |
header | string | |
| fspiop-encryption | The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request. |
header | string | |
| fspiop-signature | The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature. |
header | string | |
| fspiop-uri | The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document. |
header | string | |
| fspiop-http-method | The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document. |
header | string | |
| content-length | The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes) |
header | integer (int32) |
application/json
- 201 Created
-
Created
Name Description Data Type - 400 Bad Request
-
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
- 401 Unauthorized
-
Unauthorized - The request requires authentication in order to be processed.
- 403 Forbidden
-
Forbidden - The request was denied and will be denied in the future.
- 404 Not Found
-
Not Found - The resource specified in the URI was not found.
- 405 Method Not Allowed
-
Method Not Allowed - An unsupported HTTP method for the request was used.
- 406 Not Acceptable
-
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
- 501 Not Implemented
-
Not Implemented - The server does not support the requested service. The client should not retry.
- 503 Service Unavailable
-
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types: application/json
| Name | Description | Type | Data Type | Annotation |
|---|---|---|---|---|
| Type | The type of lookup being requested, this can be MSISDN, bankAccount etc. |
path | string | |
| ID | The ID related to the Type, if MSISDN then this is the mobile number being requested |
path | string | |
| content-type | The Content-Type header indicates the specific version of the API used to send the payload body. |
header | string | |
| date | The Date header field indicates the date when the request was sent. |
header | string | |
| fspiop-source | The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature). |
header | string | |
| accept | The Accept header field indicates the version of the API the client would like the server to use. |
header | string | |
| x-forwarded-for | The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For. |
header | string | |
| fspiop-destination | The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes. |
header | string | |
| fspiop-encryption | The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request. |
header | string | |
| fspiop-signature | The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature. |
header | string | |
| fspiop-uri | The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document. |
header | string | |
| fspiop-http-method | The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document. |
header | string | |
| content-length | The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes) |
header | integer (int32) |
application/json
- 204 No Content
-
No Content
Name Description Data Type - 400 Bad Request
-
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
- 401 Unauthorized
-
Unauthorized - The request requires authentication in order to be processed.
- 403 Forbidden
-
Forbidden - The request was denied and will be denied in the future.
- 404 Not Found
-
Not Found - The resource specified in the URI was not found.
- 405 Method Not Allowed
-
Method Not Allowed - An unsupported HTTP method for the request was used.
- 406 Not Acceptable
-
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
- 501 Not Implemented
-
Not Implemented - The server does not support the requested service. The client should not retry.
- 503 Service Unavailable
-
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
Schema definitions
CurrencyEnum: string , x ∈ { AED , AFN , ALL , AMD , ANG , AOA , ARS , AUD , AWG , AZN , BAM , BBD , BDT , BGN , BHD , BIF , BMD , BND , BOB , BRL , BSD , BTN , BWP , BYN , BZD , CAD , CDF , CHF , CLP , CNY , COP , CRC , CUC , CUP , CVE , CZK , DJF , DKK , DOP , DZD , EGP , ERN , ETB , EUR , FJD , FKP , GBP , GEL , GGP , GHS , GIP , GMD , GNF , GTQ , GYD , HKD , HNL , HRK , HTG , HUF , IDR , ILS , IMP , INR , IQD , IRR , ISK , JEP , JMD , JOD , JPY , KES , KGS , KHR , KMF , KPW , KRW , KWD , KYD , KZT , LAK , LBP , LKR , LRD , LSL , LYD , MAD , MDL , MGA , MKD , MMK , MNT , MOP , MRO , MUR , MVR , MWK , MXN , MYR , MZN , NAD , NGN , NIO , NOK , NPR , NZD , OMR , PAB , PEN , PGK , PHP , PKR , PLN , PYG , QAR , RON , RSD , RUB , RWF , SAR , SBD , SCR , SDG , SEK , SGD , SHP , SLL , SOS , SPL , SRD , STD , SVC , SYP , SZL , THB , TJS , TMT , TND , TOP , TRY , TTD , TVD , TWD , TZS , UAH , UGX , USD , UYU , UZS , VEF , VND , VUV , WST , XAF , XCD , XDR , XOF , XPF , YER , ZAR , ZMW , ZWD }
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
Data model for the complex type ErrorInformation.
- errorCode: string
-
Specific error number.
- errorDescription: string
-
Error description string.
- extensionList: ExtensionList
-
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
- errorInformation: ErrorInformation
-
Data model for the complex type Extension
- key: string
-
Extension key.
- value: string
-
Extension value.
Data model for the complex type ExtensionList
- extension: object[]
-
Number of Extension elements
PUT /participants/{ID} object
- partyList: object[]
-
List of PartyResult elements that were either created or failed to be created.
- currency: string
-
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
POST /participants object
- requestId: string
-
The ID of the request, decided by the client. Used for identification of the callback from the server.
- partyList: object[]
-
List of PartyIdInfo elements that the client would like to update or create FSP information about.
OK
- partyList: object[]
-
List of PartyTypeIdInfo elements that were either created or failed to be created.
PUT /participants/{Type}/{ID} object
- fspId: string
-
FSP Identifier that the Party belongs to.
- currency: string
-
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
- partySubIdOrType: string
-
A sub-identifier or sub-type for the Party.
Data model for the complex type PartyIdInfo.
- partyIdType: string
-
Type of the identifier.
- partyIdentifier: string
-
An identifier for the Party.
- partySubIdOrType: string
-
A sub-identifier or sub-type for the Party.
- fspId: string
-
FSP ID
- currency: string
-
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum: string , x ∈ { MSISDN , EMAIL , PERSONAL_ID , BUSINESS , DEVICE , ACCOUNT_ID , IBAN , ALIAS }
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
Data model for the complex type PartyResult.
- partyId: PartyIdInfo
-
- errorInformation: ErrorInformation
-
Data model for the complex type PartyIdInfo.
- fspId: string
-
FSP ID
- currency: string
-
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
- partySubIdOrType: string
-
A sub-identifier or sub-type for the Party.
swagger: '2.0'
info:
- version: '1.0'
+ version: '1.1'
title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
contact: {}
basePath: /
schemes: []
consumes:
- - application/json
+- application/json
produces:
- - application/json
+- application/json
paths:
/participants/{Type}/{ID}:
get:
description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Look up participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDGet
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
200:
description: OK
paths:
description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
summary: Return participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPut
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: accept
- in: header
- required: false
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
- 200:
- description: OK
+ 204:
+ description: No Content
headers: {}
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
paths:
description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
summary: Create participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
201:
description: Created
paths:
description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Delete participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDDelete
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
204:
description: No Content
paths:
description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
summary: Batch create participant information #fail these as a batch or accept it as a batch
tags:
- - participants
+ - participants
operationId: ParticipantsPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsPostRequest'
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
201:
description: Created
headers: {}
+ schema:
+ $ref: '#/definitions/ParticipantsIDPutResponse'
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
schema:
definitions:
example: AED
type: string
enum:
- - AED
- - AFN
- - ALL
- - AMD
- - ANG
- - AOA
- - ARS
- - AUD
- - AWG
- - AZN
- - BAM
- - BBD
- - BDT
- - BGN
- - BHD
- - BIF
- - BMD
- - BND
- - BOB
- - BRL
- - BSD
- - BTN
- - BWP
- - BYN
- - BZD
- - CAD
- - CDF
- - CHF
- - CLP
- - CNY
- - COP
- - CRC
- - CUC
- - CUP
- - CVE
- - CZK
- - DJF
- - DKK
- - DOP
- - DZD
- - EGP
- - ERN
- - ETB
- - EUR
- - FJD
- - FKP
- - GBP
- - GEL
- - GGP
- - GHS
- - GIP
- - GMD
- - GNF
- - GTQ
- - GYD
- - HKD
- - HNL
- - HRK
- - HTG
- - HUF
- - IDR
- - ILS
- - IMP
- - INR
- - IQD
- - IRR
- - ISK
- - JEP
- - JMD
- - JOD
- - JPY
- - KES
- - KGS
- - KHR
- - KMF
- - KPW
- - KRW
- - KWD
- - KYD
- - KZT
- - LAK
- - LBP
- - LKR
- - LRD
- - LSL
- - LYD
- - MAD
- - MDL
- - MGA
- - MKD
- - MMK
- - MNT
- - MOP
- - MRO
- - MUR
- - MVR
- - MWK
- - MXN
- - MYR
- - MZN
- - NAD
- - NGN
- - NIO
- - NOK
- - NPR
- - NZD
- - OMR
- - PAB
- - PEN
- - PGK
- - PHP
- - PKR
- - PLN
- - PYG
- - QAR
- - RON
- - RSD
- - RUB
- - RWF
- - SAR
- - SBD
- - SCR
- - SDG
- - SEK
- - SGD
- - SHP
- - SLL
- - SOS
- - SPL
- - SRD
- - STD
- - SVC
- - SYP
- - SZL
- - THB
- - TJS
- - TMT
- - TND
- - TOP
- - TRY
- - TTD
- - TVD
- - TWD
- - TZS
- - UAH
- - UGX
- - USD
- - UYU
- - UZS
- - VEF
- - VND
- - VUV
- - WST
- - XAF
- - XCD
- - XDR
- - XOF
- - XPF
- - YER
- - ZAR
- - ZMW
- - ZWD
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
PartyIdTypeEnum:
title: PartyIdTypeEnum
description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
example: MSISDN
type: string
enum:
- - MSISDN
- - EMAIL
- - PERSONAL_ID
- - BUSINESS
- - DEVICE
- - ACCOUNT_ID
- - IBAN
- - ALIAS
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
ErrorInformation:
title: ErrorInformation
description: Data model for the complex type ErrorInformation.
definitions:
extensionList:
$ref: '#/definitions/ExtensionList'
required:
- - errorCode
- - errorDescription
+ - errorCode
+ - errorDescription
ErrorInformationResponse:
title: ErrorInformationResponse
description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
definitions:
description: Extension value.
type: string
required:
- - key
- - value
+ - key
+ - value
ExtensionList:
title: ExtensionList
description: Data model for the complex type ExtensionList
definitions:
minItems: 1
maxItems: 16
required:
- - extension
+ - extension
ParticipantsTypeIDGetResponse:
title: ParticipantsTypeIDGetResponse
description: OK
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
ParticipantsPostRequest:
title: ParticipantsPostRequest
description: POST /participants object
definitions:
minItems: 1
maxItems: 10000
required:
- - requestId
- - partyList
+ - requestId
+ - partyList
PartyIdInfo:
title: PartyIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
type: string
required:
- - partyIdType
- - partyIdentifier
+ - partyIdType
+ - partyIdentifier
+ ParticipantsIDPutResponse:
+ title: ParticipantsIDPutResponse
+ type: object
+ description: PUT /participants/{ID} object
+ properties:
+ partyList:
+ type: array
+ items:
+ $ref: '#/definitions/PartyResult'
+ minItems: 1
+ maxItems: 10000
+ description: List of PartyResult elements that were either created or failed to be created.
+ currency:
+ type: string
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ required:
+ - partyList
+ PartyResult:
+ title: PartyResult
+ type: object
+ description: Data model for the complex type PartyResult.
+ properties:
+ partyId:
+ $ref: '#/definitions/PartyIdInfo'
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ required:
+ - partyId
PartyTypeIdInfo:
title: PartyTypeIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
tags:
- - name: participants
- description: ''
+- name: participants
+ description: ''
+---
+showToc: false
+---
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
\ No newline at end of file
/assets/images/uml/.gitkeep b/assets/images/uml/.gitkeep
new file mode 100644
index 0000000..e69de29
At of March 6th 2019, the active releases for core central services are as below
* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
+
+| Version | 4.0.0 | 5.3.0 | 5.4.0 | 5.0 |
+| --- | :---: | :---: | :---: | :---: |
+| Released | x | x | x | x |
+| QA Framework | x |
\ No newline at end of file
+########################
+#### gitbook-builder ###
+########################
+
+FROM node:10.15-alpine as gitbook-builder
+
+WORKDIR /opt/gitbook
+COPY . /opt/gitbook
+
+RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake graphviz ttf-droid ttf-droid-nonlatin curl
+
+ENV PLANTUML_VERSION 1.2019.3
+ENV LANG en_US.UTF-8
+RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o plantuml.jar
+
+RUN npm install
+
+########################
+#### gitbook-server ####
+########################
+
+FROM node:10.15-alpine as gitbook-server
+
+WORKDIR /opt/gitbook
+COPY --from=gitbook-builder /opt/gitbook .
+
+RUN apk add --no-cache -t build-dependencies git make gcc g++ python libtool autoconf automake
+
+EXPOSE 8989
+
+CMD npm run gitbook:serveNoReload
+# Glossary of Terms
+
+| Term | Definition | Notes |
+| --- | --- | --- |
+| DFSP | Digital Financial Service Provider | |
+| FSP | Financial Service Provider | |
+| K8s | Short name for [Kubernetes](https://kubernetes.io/) | Read more here [https://kubernetes.io](https://kubernetes.io) |
+| ALS | [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md) | Refer to [Documentation](mojaloop-technical-overview/account-lookup-service/README.md) |
+/*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+
+ * Gates Foundation
+ - Name Surname
+
+ * Miguel de Barros
+
+ --------------
+ ******/
+
+const express = require('express')
+const app = express()
+app.use(express.static(__dirname + '/_book'))
+
+app.listen(process.env.PORT || 8989)
Use-cases that have been implemented over and above for Hub Operational use:
### 1.1 Account Lookup Service (ALS)
The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+#### 1.1.1 Assumptions
+
+* The ALS design will only cater for a single switch for the time being.
+* Support for multiple switches will utilise the same DNS resolution mechanism that is being developed for the Cross Border/Network design.
+
+#### 1.1.2 Routing
+
The routing configuration will be based on the following:
* PartyIdType - See section `7.5.6` of the Mojaloop Specification
-* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
-* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, however `isDefault` indicator must be set to `true` if the `Currency` is not provided.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+
### 1.2 ALS Oracle
The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
_Note: The Participant Lookup use-case similarly applies to for a Payee Initiate
#### 2.2.1 GET Participant
-[Sequence Diagram for GET Participants](als-get-participants.md)
+- [Sequence Diagram for GET Participants](als-get-participants.md)
#### 2.2.2 POST Participant
-[Sequence Diagram for POST Participants](als-post-participants.md)
+- [Sequence Diagram for POST Participants](als-post-participants.md)
+
+#### 2.2.3 POST Participant (Batch)
+
+- [Sequence Diagram for POST Participants (Batch)](als-post-participants-batch.md)
+
+#### 2.2.4 DEL Participant
+
+- [Sequence Diagram for DEL Participants](als-del-participants.md)
## 3. Party Lookup Design
_Note: The Participant Lookup use-case similarly applies to for a Payee Initiate
#### 3.2.1 GET Parties
-[Sequence Diagram for GET Parties](als-get-parties.md)
+- [Sequence Diagram for GET Parties](als-get-parties.md)
## 4. Database Design
+# DEL Participants
+
+Design for the deletion of a Participant by a DFSP.
+
+## Notes
+- Reference section 6.2.2.4 - Note: The ALS should verify that it is the Party’s current FSP that is deleting the FSP information. ~ This has been addressed in the design by insuring that the Party currently belongs to the FSPs requesting the deletion of the record. Any other validations are out of scope for the Switch and should be addressed at the schema level.
+
+## Sequence Diagram
+
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-del-participants-7.1.2.plantuml" %}
+{% enduml %}
# GET Participants
+Design for the retrieval of a Participant by a DFSP.
+
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participants-7.1.0.plantuml" %}
{% enduml %}
# GET Parties
+Design for the retrieval of a Party by a DFSP.
+
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" %}
{% enduml %}
+# Sequence Diagram for POST Participants (Batch)
+
+Design for the creation of a Participant by a DFSP via a batch request.
+
+## Notes
+- Operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+- Duplicate POST Requests with matching TYPE and optional CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+
+## Sequence Diagram
+
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-batch-7.1.1.plantuml" %}
+{% enduml %}
# Sequence Diagram for POST Participants
-## Notes
-- Operation only supports requests which contain:
- - All Participant's FSPs match the FSPIOP-Source
- - All Participant's TYPEs are the same
- - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
-
-## Sequence Diagram
-
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
-{% enduml %}
+Coming soon.
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A10. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A9. User Lookup GET /parties/<idType>/<id>A9. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A11. User Lookup PUT /parties/<idType>/<id>A11. User Lookup <br>PUT /parties/<idType>/<id>A14. User Lookup PUT /parties/<idType>/<id>A14. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA8. Retrieve Participant End-point DataA8. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A12. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA6. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A13. Retrieve Participant End-point Data<font style="font-size: 13px">A13. Retrieve Participant End-point Data</font>
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.2. Delete Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistence Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+actor "Payee FSP" as PAYEE_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+'entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Parties\nFSP DAO" as ALS_PARTIES_FSP_DAO
+entity "ALS Participant Endpoint\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+participant ALS_PARTIES_FSP_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Financial Service Provider" #LightGrey
+participant PAYEE_FSP
+end box
+
+' START OF FLOW
+
+group Get Party Details
+ PAYER_FSP ->> ALS_API: Request to delete Participant details\nDEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to delete Participant details
+
+ alt oracleEndpoint match found & parties information retrieved
+ activate ALS_PARTICIPANT_HANDLER
+ '********************* Retrieve Oracle Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
+ '********************* Retrieve Switch Routing Information - START ************************
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
+ '********************* Retrieve Switch Routing Information - END ************************
+
+ |||
+
+ '********************* Validate FSPIOP-Source Participant - START ************************
+ group Validate FSPIOP-Source Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request FSPIOP-Source participant information\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{FSPIOP-Source}\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return FSPIOP-Source participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return FSPIOP-Source participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate FSPIOP-Source participant\nError code: 320x
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId == FSPIOP-Source\nError code: 3100
+ end group
+ '********************* Validate Participant - END ************************
+
+ |||
+
+ '********************* Request Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information for PayerFSP\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ORACLE_API
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Request Participant Information from Oracle Sequence]]
+ |||
+ end ref
+
+ '********************* Request Oracle Participant Information - END ************************
+
+ |||
+
+ '********************* Validate Participant Ownership - START ************************
+ ' Reference section 6.2.2.4 - Note: The ALS should verify that it is the Party’s current FSP that is deleting the FSP information. Is this adequate?
+ group Validate Participant Ownership
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId matches Participant Information retrieved from Oracle.\nError code: 3100
+ end group
+ '********************* Validate Participant - END ************************
+
+ |||
+
+ '********************* Delete Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to delete Participant's FSP details DEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to delete Participant's FSP details DEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result
+ deactivate ORACLE_API
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Delete Oracle Participant Information - END ************************
+ |||
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return delete request result
+ ALS_API ->> PAYER_FSP: Callback indiciating success:\nPUT - /participants/{TYPE}/{ID}?currency={CURRENCY}
+
+ else Validation failure or Oracle was unable process delete request
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
@startuml
' declare title
-title 7.1.0. Get Party Details
+title 7.2.0. Get Party Details
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistance Store
+' database - Database Persistence Store
' declare actors
actor "Payer FSP" as PAYER_FSP
group Get Party Details
'********************* Retrieve Oracle Routing Information - END ************************
|||
'********************* Retrieve Switch Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
- ref over ALS_PARTICIPANT_HANDLER, ALS_DB
- GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
- |||
- end ref
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
'********************* Retrieve Switch Routing Information - END ************************
|||
group Validate FSPIOP-Source Participant
group Get Party Details
'********************* Request Parties Information - END ************************
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- '********************* Get PayeeFSP Participant Information - START ************************
+ '********************* Get PayeeFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.1. Post Participant (Batch) Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistence Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ loop for Participant in ParticipantList
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map (ParticipantMap) based on {TYPE}
+
+ end loop
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ alt Validation passed and the ParticipantMap was created successfully
+
+ loop for keys in ParticipantMap -> TypeKey
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config based on TypeKey (and optional Currency)\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+' '********************* Fetch Oracle Routing Information - END ************************
+'
+' '********************* Retrieve Switch Routing Information - START ************************
+'
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' |||
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
+'
+' '********************* Retrieve Switch Routing Information - END ************************
+' |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant's FSP
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant (PARTICIPANT.fspId) information for {TypeKey}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Store results in ParticipantResultMap[TypeKey]
+
+ end loop
+
+ loop for keys in ParticipantResultMap -> TypeKey
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Combine ParticipantResultMap[TypeKey] results into ParticipantResult
+ end loop
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP (FSPIOP-Source) Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information from ParticipantResult
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Validation failure and/or the ParticipantMap was not created successfully
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP (FSPIOP-Source) Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
---
--- Table structure for table `centralSwitchEndpoint`
---
-
-DROP TABLE IF EXISTS `centralSwitchEndpoint`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `centralSwitchEndpoint` (
- `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(255) DEFAULT NULL,
- `description` varchar(512) DEFAULT NULL,
- `endpointTypeId` int(10) unsigned NOT NULL,
- `value` varchar(512) NOT NULL,
- `isDefault` tinyint(1) NOT NULL DEFAULT '0',
- `isActive` tinyint(1) NOT NULL DEFAULT '1',
- `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
- `createdBy` varchar(128) NOT NULL,
- PRIMARY KEY (`centralSwitchEndpointId`),
- KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
- CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `centralSwitchEndpoint`
---
-
-LOCK TABLES `centralSwitchEndpoint` WRITE;
-/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
-/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
-UNLOCK TABLES;
-
--
-- Table structure for table `currency`
--
CREATE TABLE `currency` (
LOCK TABLES `currency` WRITE;
/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
-INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-28 09:07:47'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-28 09:07:47'),('AFN','Afghanistan afghani',1,'2019-03-28 09:07:47'),('ALL','Albanian lek',1,'2019-03-28 09:07:47'),('AMD','Armenian dram',1,'2019-03-28 09:07:47'),('ANG','Netherlands Antillian guilder',1,'2019-03-28 09:07:47'),('AOA','Angolan kwanza',1,'2019-03-28 09:07:47'),('AOR','Angolan kwanza reajustado',1,'2019-03-28 09:07:47'),('ARS','Argentine peso',1,'2019-03-28 09:07:47'),('AUD','Australian dollar',1,'2019-03-28 09:07:47'),('AWG','Aruban guilder',1,'2019-03-28 09:07:47'),('AZN','Azerbaijanian new manat',1,'2019-03-28 09:07:47'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-28 09:07:47'),('BBD','Barbados dollar',1,'2019-03-28 09:07:47'),('BDT','Bangladeshi taka',1,'2019-03-28 09:07:47'),('BGN','Bulgarian lev',1,'2019-03-28 09:07:47'),('BHD','Bahraini dinar',1,'2019-03-28 09:07:47'),('BIF','Burundi franc',1,'2019-03-28 09:07:47'),('BMD','Bermudian dollar',1,'2019-03-28 09:07:47'),('BND','Brunei dollar',1,'2019-03-28 09:07:47'),('BOB','Bolivian boliviano',1,'2019-03-28 09:07:47'),('BRL','Brazilian real',1,'2019-03-28 09:07:47'),('BSD','Bahamian dollar',1,'2019-03-28 09:07:47'),('BTN','Bhutan ngultrum',1,'2019-03-28 09:07:47'),('BWP','Botswana pula',1,'2019-03-28 09:07:47'),('BYN','Belarusian ruble',1,'2019-03-28 09:07:47'),('BZD','Belize dollar',1,'2019-03-28 09:07:47'),('CAD','Canadian dollar',1,'2019-03-28 09:07:47'),('CDF','Congolese franc',1,'2019-03-28 09:07:47'),('CHF','Swiss franc',1,'2019-03-28 09:07:47'),('CLP','Chilean peso',1,'2019-03-28 09:07:47'),('CNY','Chinese yuan renminbi',1,'2019-03-28 09:07:47'),('COP','Colombian peso',1,'2019-03-28 09:07:47'),('CRC','Costa Rican colon',1,'2019-03-28 09:07:47'),('CUC','Cuban convertible peso',1,'2019-03-28 09:07:47'),('CUP','Cuban peso',1,'2019-03-28 09:07:47'),('CVE','Cape Verde escudo',1,'2019-03-28 09:07:47'),('CZK','Czech koruna',1,'2019-03-28 09:07:47'),('DJF','Djibouti franc',1,'2019-03-28 09:07:47'),('DKK','Danish krone',1,'2019-03-28 09:07:47'),('DOP','Dominican peso',1,'2019-03-28 09:07:47'),('DZD','Algerian dinar',1,'2019-03-28 09:07:47'),('EEK','Estonian kroon',1,'2019-03-28 09:07:47'),('EGP','Egyptian pound',1,'2019-03-28 09:07:47'),('ERN','Eritrean nakfa',1,'2019-03-28 09:07:47'),('ETB','Ethiopian birr',1,'2019-03-28 09:07:47'),('EUR','EU euro',1,'2019-03-28 09:07:47'),('FJD','Fiji dollar',1,'2019-03-28 09:07:47'),('FKP','Falkland Islands pound',1,'2019-03-28 09:07:47'),('GBP','British pound',1,'2019-03-28 09:07:47'),('GEL','Georgian lari',1,'2019-03-28 09:07:47'),('GGP','Guernsey pound',1,'2019-03-28 09:07:47'),('GHS','Ghanaian new cedi',1,'2019-03-28 09:07:47'),('GIP','Gibraltar pound',1,'2019-03-28 09:07:47'),('GMD','Gambian dalasi',1,'2019-03-28 09:07:47'),('GNF','Guinean franc',1,'2019-03-28 09:07:47'),('GTQ','Guatemalan quetzal',1,'2019-03-28 09:07:47'),('GYD','Guyana dollar',1,'2019-03-28 09:07:47'),('HKD','Hong Kong SAR dollar',1,'2019-03-28 09:07:47'),('HNL','Honduran lempira',1,'2019-03-28 09:07:47'),('HRK','Croatian kuna',1,'2019-03-28 09:07:47'),('HTG','Haitian gourde',1,'2019-03-28 09:07:47'),('HUF','Hungarian forint',1,'2019-03-28 09:07:47'),('IDR','Indonesian rupiah',1,'2019-03-28 09:07:47'),('ILS','Israeli new shekel',1,'2019-03-28 09:07:47'),('IMP','Isle of Man pound',1,'2019-03-28 09:07:47'),('INR','Indian rupee',1,'2019-03-28 09:07:47'),('IQD','Iraqi dinar',1,'2019-03-28 09:07:47'),('IRR','Iranian rial',1,'2019-03-28 09:07:47'),('ISK','Icelandic krona',1,'2019-03-28 09:07:47'),('JEP','Jersey pound',1,'2019-03-28 09:07:47'),('JMD','Jamaican dollar',1,'2019-03-28 09:07:47'),('JOD','Jordanian dinar',1,'2019-03-28 09:07:47'),('JPY','Japanese yen',1,'2019-03-28 09:07:47'),('KES','Kenyan shilling',1,'2019-03-28 09:07:47'),('KGS','Kyrgyz som',1,'2019-03-28 09:07:47'),('KHR','Cambodian riel',1,'2019-03-28 09:07:47'),('KMF','Comoros franc',1,'2019-03-28 09:07:47'),('KPW','North Korean won',1,'2019-03-28 09:07:47'),('KRW','South Korean won',1,'2019-03-28 09:07:47'),('KWD','Kuwaiti dinar',1,'2019-03-28 09:07:47'),('KYD','Cayman Islands dollar',1,'2019-03-28 09:07:47'),('KZT','Kazakh tenge',1,'2019-03-28 09:07:47'),('LAK','Lao kip',1,'2019-03-28 09:07:47'),('LBP','Lebanese pound',1,'2019-03-28 09:07:47'),('LKR','Sri Lanka rupee',1,'2019-03-28 09:07:47'),('LRD','Liberian dollar',1,'2019-03-28 09:07:47'),('LSL','Lesotho loti',1,'2019-03-28 09:07:47'),('LTL','Lithuanian litas',1,'2019-03-28 09:07:47'),('LVL','Latvian lats',1,'2019-03-28 09:07:47'),('LYD','Libyan dinar',1,'2019-03-28 09:07:47'),('MAD','Moroccan dirham',1,'2019-03-28 09:07:47'),('MDL','Moldovan leu',1,'2019-03-28 09:07:47'),('MGA','Malagasy ariary',1,'2019-03-28 09:07:47'),('MKD','Macedonian denar',1,'2019-03-28 09:07:47'),('MMK','Myanmar kyat',1,'2019-03-28 09:07:47'),('MNT','Mongolian tugrik',1,'2019-03-28 09:07:47'),('MOP','Macao SAR pataca',1,'2019-03-28 09:07:47'),('MRO','Mauritanian ouguiya',1,'2019-03-28 09:07:47'),('MUR','Mauritius rupee',1,'2019-03-28 09:07:47'),('MVR','Maldivian rufiyaa',1,'2019-03-28 09:07:47'),('MWK','Malawi kwacha',1,'2019-03-28 09:07:47'),('MXN','Mexican peso',1,'2019-03-28 09:07:47'),('MYR','Malaysian ringgit',1,'2019-03-28 09:07:47'),('MZN','Mozambique new metical',1,'2019-03-28 09:07:47'),('NAD','Namibian dollar',1,'2019-03-28 09:07:47'),('NGN','Nigerian naira',1,'2019-03-28 09:07:47'),('NIO','Nicaraguan cordoba oro',1,'2019-03-28 09:07:47'),('NOK','Norwegian krone',1,'2019-03-28 09:07:47'),('NPR','Nepalese rupee',1,'2019-03-28 09:07:47'),('NZD','New Zealand dollar',1,'2019-03-28 09:07:47'),('OMR','Omani rial',1,'2019-03-28 09:07:47'),('PAB','Panamanian balboa',1,'2019-03-28 09:07:47'),('PEN','Peruvian nuevo sol',1,'2019-03-28 09:07:47'),('PGK','Papua New Guinea kina',1,'2019-03-28 09:07:47'),('PHP','Philippine peso',1,'2019-03-28 09:07:47'),('PKR','Pakistani rupee',1,'2019-03-28 09:07:47'),('PLN','Polish zloty',1,'2019-03-28 09:07:47'),('PYG','Paraguayan guarani',1,'2019-03-28 09:07:47'),('QAR','Qatari rial',1,'2019-03-28 09:07:47'),('RON','Romanian new leu',1,'2019-03-28 09:07:47'),('RSD','Serbian dinar',1,'2019-03-28 09:07:47'),('RUB','Russian ruble',1,'2019-03-28 09:07:47'),('RWF','Rwandan franc',1,'2019-03-28 09:07:47'),('SAR','Saudi riyal',1,'2019-03-28 09:07:47'),('SBD','Solomon Islands dollar',1,'2019-03-28 09:07:47'),('SCR','Seychelles rupee',1,'2019-03-28 09:07:47'),('SDG','Sudanese pound',1,'2019-03-28 09:07:47'),('SEK','Swedish krona',1,'2019-03-28 09:07:47'),('SGD','Singapore dollar',1,'2019-03-28 09:07:47'),('SHP','Saint Helena pound',1,'2019-03-28 09:07:47'),('SLL','Sierra Leone leone',1,'2019-03-28 09:07:47'),('SOS','Somali shilling',1,'2019-03-28 09:07:47'),('SPL','Seborgan luigino',1,'2019-03-28 09:07:47'),('SRD','Suriname dollar',1,'2019-03-28 09:07:47'),('STD','Sao Tome and Principe dobra',1,'2019-03-28 09:07:47'),('SVC','El Salvador colon',1,'2019-03-28 09:07:47'),('SYP','Syrian pound',1,'2019-03-28 09:07:47'),('SZL','Swaziland lilangeni',1,'2019-03-28 09:07:47'),('THB','Thai baht',1,'2019-03-28 09:07:47'),('TJS','Tajik somoni',1,'2019-03-28 09:07:47'),('TMT','Turkmen new manat',1,'2019-03-28 09:07:47'),('TND','Tunisian dinar',1,'2019-03-28 09:07:47'),('TOP','Tongan pa\'anga',1,'2019-03-28 09:07:47'),('TRY','Turkish lira',1,'2019-03-28 09:07:47'),('TTD','Trinidad and Tobago dollar',1,'2019-03-28 09:07:47'),('TVD','Tuvaluan dollar',1,'2019-03-28 09:07:47'),('TWD','Taiwan New dollar',1,'2019-03-28 09:07:47'),('TZS','Tanzanian shilling',1,'2019-03-28 09:07:47'),('UAH','Ukrainian hryvnia',1,'2019-03-28 09:07:47'),('UGX','Uganda new shilling',1,'2019-03-28 09:07:47'),('USD','US dollar',1,'2019-03-28 09:07:47'),('UYU','Uruguayan peso uruguayo',1,'2019-03-28 09:07:47'),('UZS','Uzbekistani sum',1,'2019-03-28 09:07:47'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-28 09:07:47'),('VND','Vietnamese dong',1,'2019-03-28 09:07:47'),('VUV','Vanuatu vatu',1,'2019-03-28 09:07:47'),('WST','Samoan tala',1,'2019-03-28 09:07:47'),('XAF','CFA franc BEAC',1,'2019-03-28 09:07:47'),('XAG','Silver (ounce)',1,'2019-03-28 09:07:47'),('XAU','Gold (ounce)',1,'2019-03-28 09:07:47'),('XCD','East Caribbean dollar',1,'2019-03-28 09:07:47'),('XDR','IMF special drawing right',1,'2019-03-28 09:07:47'),('XFO','Gold franc',1,'2019-03-28 09:07:47'),('XFU','UIC franc',1,'2019-03-28 09:07:47'),('XOF','CFA franc BCEAO',1,'2019-03-28 09:07:47'),('XPD','Palladium (ounce)',1,'2019-03-28 09:07:47'),('XPF','CFP franc',1,'2019-03-28 09:07:47'),('XPT','Platinum (ounce)',1,'2019-03-28 09:07:47'),('YER','Yemeni rial',1,'2019-03-28 09:07:47'),('ZAR','South African rand',1,'2019-03-28 09:07:47'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-28 09:07:47'),('ZMW','Zambian kwacha',1,'2019-03-28 09:07:47'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-28 09:07:47'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-28 09:07:47'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-28 09:07:47'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `endpointType` (
LOCK TABLES `endpointType` WRITE;
/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
-INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `migration` (
`batch` int(11) DEFAULT NULL,
`migration_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
CREATE TABLE `migration` (
LOCK TABLES `migration` WRITE;
/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
-INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-28 11:07:46'),(2,'02_endpointType.js',1,'2019-03-28 11:07:46'),(3,'03_endpointType-indexes.js',1,'2019-03-28 11:07:46'),(4,'04_partyIdType.js',1,'2019-03-28 11:07:46'),(5,'05_partyIdType-indexes.js',1,'2019-03-28 11:07:46'),(6,'08_oracleEndpoint.js',1,'2019-03-28 11:07:47'),(7,'09_oracleEndpoint-indexes.js',1,'2019-03-28 11:07:47');
/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `oracleEndpoint` (
`oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partyIdTypeId` int(10) unsigned NOT NULL,
`endpointTypeId` int(10) unsigned NOT NULL,
- `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
`currencyId` varchar(255) DEFAULT NULL,
`value` varchar(512) NOT NULL,
`isDefault` tinyint(1) NOT NULL DEFAULT '0',
CREATE TABLE `oracleEndpoint` (
`createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` varchar(128) NOT NULL,
PRIMARY KEY (`oracleEndpointId`),
- KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
- CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
CREATE TABLE `partyIdType` (
LOCK TABLES `partyIdType` WRITE;
/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
-INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-28 09:07:47'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-28 09:07:47'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-28 09:07:47'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-28 09:07:47'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-28 09:07:47'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2019-03-18 17:52:06
+-- Dump completed on 2019-03-28 11:09:54
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A list of the pre-requisite tool set required for the deployment of Mojaloop;
- **Kubernetes** An open-source system for automating deployment, scaling, and management of containerized applications. Find out more about [Kubernetes](https://kubernetes.io),
- kubectl - Kubernetes CLI for Kubernetes Management is required. Find out more about [kubectl](https://kubernetes.io/docs/reference/kubectl/overview/),
- [Install-kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/),
- - microk8s - MicroK8s installs a barebones upstream Kubernetes. We recommend this installation on Linux (ubuntu) OS. Find out more about [microk8s](https://microk8s.io/) and [microk8s documents](https://microk8s.io/docs/),
+ - microk8s - MicroK8s installs a barebones upstream Kubernetes for a single node deployment generally used for local development. We recommend this installation on Linux (ubuntu) OS. Find out more about [microk8s](https://microk8s.io/) and [microk8s documents](https://microk8s.io/docs/),
- [Install-microk8s](https://microk8s.io/docs/),
- kubectx - Not required but useful. Find out more about [kubectx](https://github.com/ahmetb/kubectx),
- kubetail - Not required but useful. Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. Find out more about [kubetail](https://github.com/johanhaleby/kubetail),
A list of the pre-requisite tool set required for the deployment of Mojaloop;
- **Helm** A package manager for Kubernetes. Find out more about [Helm](https://helm.sh),
- **Postman** Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces. https://www.getpostman.com/apps. Find out more about [Postman](https://postman.com).
-For **local guides** on how to setup the pre-requisites on your laptop or desktop, refer to the appropiate link document below;
+For **local guides** on how to setup the pre-requisites on your laptop or desktop, refer to the appropriate link document below;
- [Local Setup for Mac](local-setup-mac.md)
- [Local Setup for Linux](local-setup-linux.md)
- [Local Setup for Windows](local-setup-windows.md)
Insure **kubectl** is installed. A complete set of installation instruction are
1. Kubernetes Dashboard roles, services & deployment.
- Install for Dashboard using Helm (not needed if **MicroK8s** is installed): [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard))
+ Install for Dashboard using Helm (not needed if **MicroK8s** is installed): [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)
**IMPORTANT:** Always verify the current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file is still correct as used in the below command.
```bash
Insure **kubectl** is installed. A complete set of installation instruction are
kubectl proxy ui
```
-4. Open URI in default browser;
- ```http request
- http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+4. Open URI in default browser:
+
+ ```
+ http://localhost.com:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!
```
Select **Token**. Generate a token to use there by:
+
```bash
kubectl -n kube-system get secrets | grep dashboard-token
```
The token to use is shown on the last line of the output of that command;
+
```bash
kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
```
Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the r
#### 4.1 Helm configuration
-1. Config Helm CLI and install Helm Tiller on K8s cluster;
+1. Config Helm CLI and install Helm Tiller on K8s cluster:
```bash
helm init
```
-2. Validate Helm Tiller is up and running;
+2. Validate Helm Tiller is up and running:
```bash
kubectl -n kube-system get po | grep tiller
```
-3. Add mojaloop repo to your Helm config (optional). Linux use with sudo;
+3. Add mojaloop repo to your Helm config (optional). Linux use with sudo:
```bash
helm repo add mojaloop http://mojaloop.io/helm/repo/
```
If the repo already exists, substitute 'add' with 'apply' in the above command.
-4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts. Linux use with sudo;
+4. Add the additional dependency Helm repositories. This is needed to resolve Helm Chart dependencies required by Mojaloop charts. Linux use with sudo;
```bash
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ helm repo add kiwigrid https://kiwigrid.github.io
```
-5. Update helm repositories. Linux use with sudo;
+5. Update helm repositories. Linux use with sudo:
```bash
helm repo update
```
-6. Install nginx-ingress for load balancing & external access. Linux use with sudo;
+6. Install nginx-ingress for load balancing & external access. Linux use with sudo:
```bash
helm --namespace kube-public install stable/nginx-ingress
```
-7. Update your /ect/hosts;
+7. Update your /ect/hosts:
```bash
vi /etc/hosts
```
Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the r
```
8. Test system health in your browser after installation. This will only work if you have an active helm chart deployment running.
- **ml-api-adapter** health test;
- ```https request
+
+ **ml-api-adapter** health test:
+ ```
http://ml-api-adapter.local/health
```
- **central-ledger** health test;
- ```http request
+ **central-ledger** health test:
+ ```
http://central-ledger.local/health
```
Please, follow these instructions: [Get Postman](https://www.getpostman.com/post
#### 5.2 Setup Postman
-1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
-2. Open **Postman**
-3. Click **Import** and then **Import File**
-4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
-5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
-6. Click **Import** and then **Import File**
-7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
-8. In the imported collection, navigate to the _central_ledger_ directory
+##### Import the Collection
+1. Open **Postman**
+2. Click **Import** and then **Import From Link**
+3. Paste the following link [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json) in the input box.
+4. Press the **Import** button to continue.
+
+##### Setup the Environment Configurations
+1. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+2. Click **Import** and then **Import File**
+3. Select the _MojaloopLocal.postman_environment.json_ file you downloaded
+4. In the imported collection, navigate to the _central_ledger_ directory
# Deployment Troubleshooting
-##Suggested format to follow.
-- What is the issue.
-- How was it produced (what were you doing, where were you doing it i.e. macos, linux, etc).
-- And how do I fix it.
+## 1. Deployment issues
-## Deployment issues
+### 1.1 `ERR_NAME_NOT_RESOLVED` Error
-### 1.
-
-- What is the issue.
-central-ledger’s server IP address could not be found.
-
-- How was it produced.
- `ERR_NAME_NOT_RESOLVED`
+#### Description
+The following error is displayed when attempting to access an end-point (e.g. central-ledger.local) via the Kubernetes Service directly in a browser: `ERR_NAME_NOT_RESOLVED`
-- How do I fix it.
- * Verify that a helm chart(s) was installed by executing.
+#### Fixes
+
+ * Verify that that Mojaloop was deployed by checking that the helm chart(s) was installed by executing:
+
```bash
helm list
```
If the helm charts are not listed, see the [Helm Chart Installation](README.md#4-helm) section to install a chart.
+
+ * Ensure that all the Mojaloop Pods/Containers have started up correctly and are available through the Kubernetes dashboard.
+
+ * Note that the Mojaloop deployment via Helm can take a few minutes to initially startup depending on the system's available resources and specification. It is recommended that you wait at least 10m for all Pods/Containers to self heal before troubleshooting.
# Table of contents
* [Mojaloop Overview](README.md)
+* [Deployment Guide](deployment-guide/README.md)
+ * [Current Version](deployment-guide/current-versions.md)
+ * [Local Setup Linux](deployment-guide/local-setup-linux.md)
+ * [Local Setup Mac](deployment-guide/local-setup-mac.md)
+ * [Local Setup Windows](deployment-guide/local-setup-windows.md)
+ * [Troubleshooting](deployment-guide/deployment-troubleshooting.md)
* [Contributors Guide](contributors-guide/README.md)
- * [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
- * [Current Version](contributors-guide/mojaloop-deployment/current-versions.md)
* [Standards](contributors-guide/standards/README.md)
* [Versioning](contributors-guide/standards/versioning.md)
* [Creating new Features](contributors-guide/standards/creating-new-features.md)
+# Mojaloop Deployment
+
+The document is intended for an audience with a stable technical knowledge that would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+## Deployment and Setup
+
+- [Pre-requisites](#1-pre-requisites)
+- [Kubernetes](#3-kubernetes)
+ - [Kubernetes Dashboard](#31-kubernetes-dashboard)
+- [Helm](#4-helm)
+ - [Helm configuration](#41-helm-configuration)
+- [Postman](#5-postman)
+ - [Installing Postman](#51-installing-postman)
+ - [Setup Postman](#52-setup-postman)
+
+### 1. Pre-requisites
+
+A list of the pre-requisite tool set required for the deployment of Mojaloop;
+- **Kubernetes** An open-source system for automating deployment, scaling, and management of containerized applications. Find out more about [Kubernetes](https://kubernetes.io),
+ - kubectl - Kubernetes CLI for Kubernetes Management is required. Find out more about [kubectl](https://kubernetes.io/docs/reference/kubectl/overview/),
+ - [Install-kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/),
+ - microk8s - MicroK8s installs a barebones upstream Kubernetes. We recommend this installation on Linux (ubuntu) OS. Find out more about [microk8s](https://microk8s.io/) and [microk8s documents](https://microk8s.io/docs/),
+ - [Install-microk8s](https://microk8s.io/docs/),
+ - kubectx - Not required but useful. Find out more about [kubectx](https://github.com/ahmetb/kubectx),
+ - kubetail - Not required but useful. Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. Find out more about [kubetail](https://github.com/johanhaleby/kubetail),
+- **Docker** Provides containerized environment to host the application. Find out more about [Docker](https://docker.com),
+- **Helm** A package manager for Kubernetes. Find out more about [Helm](https://helm.sh),
+- **Postman** Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces. https://www.getpostman.com/apps. Find out more about [Postman](https://postman.com).
+
+For **local guides** on how to setup the pre-requisites on your laptop or desktop, refer to the appropiate link document below;
+- [Local Setup for Mac](local-setup-mac.md)
+- [Local Setup for Linux](local-setup-linux.md)
+- [Local Setup for Windows](local-setup-windows.md)
+
+### 2. Deployment Recommendations
+
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+**Resources Requirements:**
+
+* Control Plane (i.e. Master Node)
+
+ [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+
+ * 3x Master Nodes for future node scaling and HA (High Availability)
+
+* ETCd Plane:
+
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+
+ * 3x ETCd nodes for HA (High Availability)
+
+* Compute Plane (i.e. Worker Node):
+
+ TBC once load testing has been concluded. However the current general recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ **Note** that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+### 3. Kubernetes
+
+This section will guide the reader through the deployment process to setup Kubernetes.
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+Insure **kubectl** is installed. A complete set of installation instruction are available [here](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
+
+#### 3.1 Kubernetes Dashboard:
+
+1. Kubernetes Dashboard roles, services & deployment.
+
+ Install for Dashboard using Helm (not needed if **MicroK8s** is installed): [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard))
+
+ **IMPORTANT:** Always verify the current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file is still correct as used in the below command.
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+ If you have installed MicroK8s, **enable the MicroK8s** dashboard;
+ ```bash
+ microk8s.enable dashboard
+ ```
+ **Remember** to prefix all **kubectl** commands with **microk8s** if you opted not to create an alias.
+
+2. Verify Kubernetes Dashboard;
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+
+3. Start proxy for local UI in new terminal;
+ ```bash
+ kubectl proxy ui
+ ```
+
+4. Open URI in default browser;
+ ```http request
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+
+ Select **Token**. Generate a token to use there by:
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+ The token to use is shown on the last line of the output of that command;
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+### 4. Helm
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+#### 4.1 Helm configuration
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster;
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running;
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+
+3. Add mojaloop repo to your Helm config (optional). Linux use with sudo;
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+ If the repo already exists, substitute 'add' with 'apply' in the above command.
+
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts. Linux use with sudo;
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+5. Update helm repositories. Linux use with sudo;
+ ```bash
+ helm repo update
+ ```
+
+6. Install nginx-ingress for load balancing & external access. Linux use with sudo;
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+7. Update your /ect/hosts;
+ ```bash
+ vi /etc/hosts
+ ```
+
+ Include the following line to the config;
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+8. Test system health in your browser after installation. This will only work if you have an active helm chart deployment running.
+ **ml-api-adapter** health test;
+ ```https request
+ http://ml-api-adapter.local/health
+ ```
+
+ **central-ledger** health test;
+ ```http request
+ http://central-ledger.local/health
+ ```
+
+### 5. Postman
+
+Postman is used to send requests and receive responses.
+
+#### 5.1 Installing Postman
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+#### 5.2 Setup Postman
+
+1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+2. Open **Postman**
+3. Click **Import** and then **Import File**
+4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
+5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+6. Click **Import** and then **Import File**
+7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+8. In the imported collection, navigate to the _central_ledger_ directory
+# Deployment Troubleshooting
+
+##Suggested format to follow.
+- What is the issue.
+- How was it produced (what were you doing, where were you doing it i.e. macos, linux, etc).
+- And how do I fix it.
+
+## Deployment issues
+
+### 1.
+
+- What is the issue.
+central-ledger’s server IP address could not be found.
+
+- How was it produced.
+ `ERR_NAME_NOT_RESOLVED`
+
+- How do I fix it.
+ * Verify that a helm chart(s) was installed by executing.
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](README.md#4-helm) section to install a chart.
+# Mojaloop Setup for Linux (Ubuntu)
+
+Local setup on a Laptop or Desktop to run the Mojaloop project.
+
+## Setup Introduction
+
+This document will provide guidelines to a technical capable resources to setup, deploy and configure the Mojaloop applications on a local environment, utilizing Docker, Kubernetes and HELM charts.
+
+At this point the reader/implementer should be familiar with [Mojaloop's deployment guide](./README.md). Imported information is contained in that document and as such a prerequisite to this document.
+
+* [Environment recommendations](#1-environment-recommendations)
+ * [Kubernetes](#2-kubernetes)
+ * [MicroK8S](#21-microk8s)
+ * [Docker](#12-docker)
+* [Useful Tips](#2-useful-tips)
+
+## 1. Environment recommendations
+
+This environment setup was validated on:
+ * 64-bit version of Ubuntu Bionic 18.04(LTS).
+ * This guide is based on Ubuntu 18.04.2 (bionic) on a x86_64 desktop with 8 CPU's and 16GB RAM.
+
+## 2. Kubernetes
+
+Kubernetes installation for a local environment.
+
+#### 2.1 MicroK8S
+
+We recommend install directly from the snap store.
+
+Don't have the snap command? [Install snapd first](https://snapcraft.io/docs/core/install).
+
+1. Installing MicroK8s from snap.
+ ```bash
+ snap install microk8s --classic
+ ```
+
+2. Verify MicroK8s is installed and available.
+ ```bash
+ microk8s.status
+ ```
+
+3. During installation you can use the --wait-ready flag to wait for the kubernetes services to initialise.
+ ```bash
+ microk8s.status --wait -ready
+ ```
+
+4. To avoid colliding with a **kubectl** already installed and to avoid overwriting any existing Kubernetes configuration file, MicroK8s adds a **microk8s.kubectl** command, configured to exclusively access the new **MicroK8s** install.
+ ```bash
+ microk8s.kubectl get services
+ ```
+
+5. This step is only necessary if you require **microk8s.kubectl** to function as a standard **kubectl** command. This **DOES NOT** mean that you can then use **kubectl** to access **OTHER** k8s clusters.
+
+ An example of why you would use this: You have a bash script or 3rd party tool that expects **kubectl** to be available. E.g. If you want to use Helm, it will not work against **microk8s.kubectl**, thus one **MUST** setup the alias for Helm to function correctly.
+ ```bash
+ snap alias microk8s.kubectl kubectl
+ ```
+
+ Reverting it at any time;
+ ```bash
+ snap unalias kubectl
+ ```
+
+ We will stick with the standard command of prefixing with **microk8s.** for this guide.
+
+6. If you already have **kubectl** installed and would like to use it to access the **MicroK8s** deployment.
+ ```bash
+ microk8s.kubectl config view --raw > $HOME/.kube/config
+ ```
+
+7. View the current context.
+ ```bash
+ microk8s.kubectl config get-contexts
+ ```
+
+9. Make sure the current context is **microk8s**. If not, set it as the current context.
+ ```bash
+ microk8s.kubectl config use-context microk8s
+ ```
+
+### 1.2 Docker
+
+Docker is deployed as part of the MicroK8s installation. The docker daemon used by MicroK8s is listening on unix:///var/snap/microk8s/current/docker.sock. You can access it with the **microk8s.docker** command.
+
+1. If you require **microk8s.docker** to function as a standard **docker** command, you set an alias.
+ ```bash
+ sudo snap alias microk8s.docker docker
+ ```
+
+ Undo the alias;
+ ```bash
+ sudo snap unalias docker
+ ```
+
+2. We will apply the native microK8s commands by prefix commands **microk8s.**
+ ```bash
+ microk8s.docker ps
+ ```
+
+3. Continue setup and configuration from the Kubernetes Dashboard section in the [Mojaloop's deployment guide](./README.md#31-kubernetes-dashboard) document.
+
+## 2. Useful Tips
+
+1. Resolve problems with VSCode and kafka on ubuntu 18.04. To make the code work with VSCode debugger, added the following into the launch.json
+ ```json
+ "env": {
+ "LD_LIBRARY_PATH": "${workspaceFolder}/node_modules/node-rdkafka/build/deps",
+ "WITH_SASL": 0
+ }
+ ```
+# Mojaloop local environment setup for Mac
+
+Local setup on a Laptop or Desktop to run the Mojaloop project.
+
+## Setup Introduction
+
+This document will provide guidelines to a technical capable resources to setup, deploy and configure the Mojaloop applications on a local environment, utilizing Docker, Kubernetes and HELM charts.
+
+At this point the reader/implementer should be familiar with [Mojaloop's deployment guide](./README.md). Imported information is contained in that document and as such a prerequisite to this document.
+
+* [Local Deployment](local-setup-mac.md#local-deployment)
+ * [Kubernetes](local-setup-mac.md#1-kubernetes)
+ * [Kubernetes Installation with Docker](local-setup-mac.md#11-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](local-setup-mac.md#12-kubernetes-environment-setup)
+
+
+## 1. Kubernetes
+
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+### 1.1 Kubernetes Installation with Docker
+
+* **kubectl** Complete set of installation instruction are available [here](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
+
+ ```bash
+ brew install kubernetes-cli
+ ```
+ To verify if the installation was successful, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+To install Kubernetes with Docker, follow the steps below;
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
+
+
+
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
+
+
+
+### 1.2 Kubernetes environment setup:
+
+1. List the current Kubernetes context;
+ ```bash
+ kubectl config get-contexts
+ ```
+
+ **or**
+ ```bash
+ kubectx
+ ```
+2. Change your Contexts;
+ ```bash
+ kubectl config use-context docker-for-desktop
+ ```
+
+ **or**
+ ```bash
+ kubectx docker-for-desktop
+ ```
+
+3. Continue setup and configuration from the Kubernetes Dashboard section in the [Mojaloop's deployment guide](./README.md#31-kubernetes-dashboard) document.
\ No newline at end of file
+# Mojaloop local environment setup for Windows
+
+Coming soon - Contributions welcome.
-ARG PORT=8989
-
-########################
-#### gitbook-builder ###
-########################
-
-FROM node:10.15-alpine as gitbook-builder
-
-ENV PORT $PORT
+FROM mhart/alpine-node:10.15.1
WORKDIR /opt/gitbook
COPY . /opt/gitbook
-RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake graphviz ttf-droid ttf-droid-nonlatin curl
-
-ENV PLANTUML_VERSION 1.2019.3
-ENV LANG en_US.UTF-8
-RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o plantuml.jar
+RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
RUN npm install
+#
+#RUN apk del build-dependencies
-RUN npm run gitbook:build
+EXPOSE 8989
-########################
-#### gitbook-server ####
-########################
-
-FROM node:10.15-alpine as gitbook-server
-
-ENV PORT $PORT
-
-WORKDIR /opt/gitbook
-COPY --from=gitbook-builder /opt/gitbook .
+RUN npm run gitbook:install
-EXPOSE $PORT
+#RUN npm run gitbook:build
-CMD npm run express:run
+CMD npm run gitbook:serveNoReload
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
* [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
* [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
- * [POST Participants (batch)](mojaloop-technical-overview/account-lookup-service/als-post-participants-batch.md)
- * [DEL Participants](mojaloop-technical-overview/account-lookup-service/als-del-participants.md)
* [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
* [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [Helm](repositories/helm.md)
* [Project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
-* [Glossary of Terms](glossary.md)
* [Changelog](changelog.md)
Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.d
* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
-### Versions
-
-| Version | Info | Release Date |
-| --- | --- | --- |
-| 1.0 | Initial release | 2018-11-01 |
-| | | |
-
## ALS Oracle API
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
Notes:
- `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- `GET /participants` response body returns a list of Participants, containing `currency`.
- `POST /participants` request body includes the `currency` as part of each record.
-
-### Versions
-
-| Version | Info | Release Date |
-| --- | --- | --- |
-| 1.1 | `PUT /participants/{Type}/{ID}` returns a `HTTP 204 - No Content on success`. This was previously returned `HTTP 200 - Success` `POST /participants` now returns a list a `partyList` either containing a `PartyIdInfo` or `ErrorInformation`. This is alignment to the Mojaloop Specification. | 2019-03-28 |
-| 1.0 | Initial release | 2019-03-08 |
-| | | |
\ No newline at end of file
----
-showToc: false
----
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
swagger: '2.0'
info:
- version: '1.1'
+ version: '1.0'
title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
contact: {}
basePath: /
schemes: []
consumes:
-- application/json
+ - application/json
produces:
-- application/json
+ - application/json
paths:
/participants/{Type}/{ID}:
get:
description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Look up participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDGet
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
200:
description: OK
paths:
description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
summary: Return participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPut
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: accept
- in: header
- required: false
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
- 204:
- description: No Content
+ 200:
+ description: OK
headers: {}
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
paths:
description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
summary: Create participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
201:
description: Created
paths:
description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Delete participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDDelete
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
204:
description: No Content
paths:
description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
summary: Batch create participant information #fail these as a batch or accept it as a batch
tags:
- - participants
+ - participants
operationId: ParticipantsPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsPostRequest'
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
201:
description: Created
headers: {}
- schema:
- $ref: '#/definitions/ParticipantsIDPutResponse'
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
schema:
definitions:
example: AED
type: string
enum:
- - AED
- - AFN
- - ALL
- - AMD
- - ANG
- - AOA
- - ARS
- - AUD
- - AWG
- - AZN
- - BAM
- - BBD
- - BDT
- - BGN
- - BHD
- - BIF
- - BMD
- - BND
- - BOB
- - BRL
- - BSD
- - BTN
- - BWP
- - BYN
- - BZD
- - CAD
- - CDF
- - CHF
- - CLP
- - CNY
- - COP
- - CRC
- - CUC
- - CUP
- - CVE
- - CZK
- - DJF
- - DKK
- - DOP
- - DZD
- - EGP
- - ERN
- - ETB
- - EUR
- - FJD
- - FKP
- - GBP
- - GEL
- - GGP
- - GHS
- - GIP
- - GMD
- - GNF
- - GTQ
- - GYD
- - HKD
- - HNL
- - HRK
- - HTG
- - HUF
- - IDR
- - ILS
- - IMP
- - INR
- - IQD
- - IRR
- - ISK
- - JEP
- - JMD
- - JOD
- - JPY
- - KES
- - KGS
- - KHR
- - KMF
- - KPW
- - KRW
- - KWD
- - KYD
- - KZT
- - LAK
- - LBP
- - LKR
- - LRD
- - LSL
- - LYD
- - MAD
- - MDL
- - MGA
- - MKD
- - MMK
- - MNT
- - MOP
- - MRO
- - MUR
- - MVR
- - MWK
- - MXN
- - MYR
- - MZN
- - NAD
- - NGN
- - NIO
- - NOK
- - NPR
- - NZD
- - OMR
- - PAB
- - PEN
- - PGK
- - PHP
- - PKR
- - PLN
- - PYG
- - QAR
- - RON
- - RSD
- - RUB
- - RWF
- - SAR
- - SBD
- - SCR
- - SDG
- - SEK
- - SGD
- - SHP
- - SLL
- - SOS
- - SPL
- - SRD
- - STD
- - SVC
- - SYP
- - SZL
- - THB
- - TJS
- - TMT
- - TND
- - TOP
- - TRY
- - TTD
- - TVD
- - TWD
- - TZS
- - UAH
- - UGX
- - USD
- - UYU
- - UZS
- - VEF
- - VND
- - VUV
- - WST
- - XAF
- - XCD
- - XDR
- - XOF
- - XPF
- - YER
- - ZAR
- - ZMW
- - ZWD
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
PartyIdTypeEnum:
title: PartyIdTypeEnum
description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
example: MSISDN
type: string
enum:
- - MSISDN
- - EMAIL
- - PERSONAL_ID
- - BUSINESS
- - DEVICE
- - ACCOUNT_ID
- - IBAN
- - ALIAS
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
ErrorInformation:
title: ErrorInformation
description: Data model for the complex type ErrorInformation.
definitions:
extensionList:
$ref: '#/definitions/ExtensionList'
required:
- - errorCode
- - errorDescription
+ - errorCode
+ - errorDescription
ErrorInformationResponse:
title: ErrorInformationResponse
description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
definitions:
description: Extension value.
type: string
required:
- - key
- - value
+ - key
+ - value
ExtensionList:
title: ExtensionList
description: Data model for the complex type ExtensionList
definitions:
minItems: 1
maxItems: 16
required:
- - extension
+ - extension
ParticipantsTypeIDGetResponse:
title: ParticipantsTypeIDGetResponse
description: OK
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
ParticipantsPostRequest:
title: ParticipantsPostRequest
description: POST /participants object
definitions:
minItems: 1
maxItems: 10000
required:
- - requestId
- - partyList
+ - requestId
+ - partyList
PartyIdInfo:
title: PartyIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
type: string
required:
- - partyIdType
- - partyIdentifier
- ParticipantsIDPutResponse:
- title: ParticipantsIDPutResponse
- type: object
- description: PUT /participants/{ID} object
- properties:
- partyList:
- type: array
- items:
- $ref: '#/definitions/PartyResult'
- minItems: 1
- maxItems: 10000
- description: List of PartyResult elements that were either created or failed to be created.
- currency:
- type: string
- description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
- required:
- - partyList
- PartyResult:
- title: PartyResult
- type: object
- description: Data model for the complex type PartyResult.
- properties:
- partyId:
- $ref: '#/definitions/PartyIdInfo'
- errorInformation:
- $ref: '#/definitions/ErrorInformation'
- required:
- - partyId
+ - partyIdType
+ - partyIdentifier
PartyTypeIdInfo:
title: PartyTypeIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
tags:
-- name: participants
- description: ''
+ - name: participants
+ description: ''
----
-showToc: false
----
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
\ No newline at end of file
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
In general, we are looking for example implementations and bug fixes, and projec
Join the [Mojaloop Slack Discussions](https://mojaloop-slack.herokuapp.com/) to connect with other developers.
-Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
+Also checkout the [FAQ](https://github.com/mojaloop/documentation/blob/master/contributors-guide/frequently-asked-questions.md)
### What is the current release?
A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
-At of March 6th 2019, the active releases for core central services are as below
+The active releases for core central services are as below
* Helm: [](https://github.com/mojaloop/helm/releases)
* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
At of March 6th 2019, the active releases for core central services are as below
* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
-
-| Version | 4.0.0 | 5.3.0 | 5.4.0 | 5.0 |
-| --- | :---: | :---: | :---: | :---: |
-| Released | x | x | x | x |
-| QA Framework | x |
\ No newline at end of file
Use-cases that have been implemented over and above for Hub Operational use:
### 1.1 Account Lookup Service (ALS)
The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
-#### 1.1.1 Assumptions
-
-* The ALS design will only cater for a single switch for the time being.
-* Support for multiple switches will utilise the same DNS resolution mechanism that is being developed for the Cross Border/Network design.
-
-#### 1.1.2 Routing
-
The routing configuration will be based on the following:
* PartyIdType - See section `7.5.6` of the Mojaloop Specification
-* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, however `isDefault` indicator must be set to `true` if the `Currency` is not provided.
-* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
-
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
### 1.2 ALS Oracle
The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
_Note: The Participant Lookup use-case similarly applies to for a Payee Initiate
#### 2.2.1 GET Participant
-- [Sequence Diagram for GET Participants](als-get-participants.md)
+[Sequence Diagram for GET Participants](als-get-participants.md)
#### 2.2.2 POST Participant
-- [Sequence Diagram for POST Participants](als-post-participants.md)
-
-#### 2.2.3 POST Participant (Batch)
-
-- [Sequence Diagram for POST Participants (Batch)](als-post-participants-batch.md)
-
-#### 2.2.4 DEL Participant
-
-- [Sequence Diagram for DEL Participants](als-del-participants.md)
+[Sequence Diagram for POST Participants](als-post-participants.md)
## 3. Party Lookup Design
_Note: The Participant Lookup use-case similarly applies to for a Payee Initiate
#### 3.2.1 GET Parties
-- [Sequence Diagram for GET Parties](als-get-parties.md)
+[Sequence Diagram for GET Parties](als-get-parties.md)
## 4. Database Design
# GET Participants
-Design for the retrieval of a Participant by a DFSP.
-
## Sequence Diagram
-{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participants-7.1.0.plantuml" %}
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
{% enduml %}
# GET Parties
-Design for the retrieval of a Party by a DFSP.
-
## Sequence Diagram
-{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" %}
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
{% enduml %}
# Sequence Diagram for POST Participants
-Coming soon.
+## Notes
+- Operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
+ - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+
+## Sequence Diagram
+
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
+{% enduml %}
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A10. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A9. User Lookup GET /parties/<idType>/<id>A9. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A11. User Lookup PUT /parties/<idType>/<id>A11. User Lookup <br>PUT /parties/<idType>/<id>A14. User Lookup PUT /parties/<idType>/<id>A14. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA8. Retrieve Participant End-point DataA8. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A12. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA6. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A13. Retrieve Participant End-point Data<font style="font-size: 13px">A13. Retrieve Participant End-point Data</font>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
@startuml
' declare title
-title 7.2.0. Get Party Details
+title 7.1.0. Get Party Details
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistence Store
+' database - Database Persistance Store
' declare actors
actor "Payer FSP" as PAYER_FSP
group Get Party Details
'********************* Retrieve Oracle Routing Information - END ************************
|||
'********************* Retrieve Switch Routing Information - START ************************
-' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
-' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
-' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
-' |||
-' end ref
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
'********************* Retrieve Switch Routing Information - END ************************
|||
group Validate FSPIOP-Source Participant
group Get Party Details
'********************* Request Parties Information - END ************************
- '********************* Get PayerFSP Participant End-point Information - START ************************
+ '********************* Get PayerFSP Participant Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
- '********************* Get PayerFSP Participant End-point Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
- '********************* Get PayerFSP Participant End-point Information - START ************************
+ '********************* Get PayerFSP Participant Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant End-point Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- '********************* Get PayeeFSP Participant End-point Information - START ************************
+ '********************* Get PayeeFSP Participant Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant End-point Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.2.1. Post Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+' hnote over ALS_API #lightyellow
+' "POST /participant" operation only supports requests which contain:
+' - All Participant's FSPs match the FSPIOP-Source
+' - All Participant's TYPEs are the same
+' - All Participant's will be of the same Currency
+' end note
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ loop for keys in ParticipantMap -> TYPE
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+ '********************* Fetch Oracle Routing Information - END ************************
+
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ |||
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant
+ loop for Participant in ParticipantLis
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same\nError code: 3100
+
+ end loop
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of Endpoints
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Empty list of End-Points returned or Error occurred
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+ deactivate ALS_API
+
+ deactivate ALS_PARTICIPANT_HANDLER
+ end loop
+end
+@enduml
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+--
+-- Table structure for table `centralSwitchEndpoint`
+--
+
+DROP TABLE IF EXISTS `centralSwitchEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `centralSwitchEndpoint` (
+ `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`centralSwitchEndpointId`),
+ KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `centralSwitchEndpoint`
+--
+
+LOCK TABLES `centralSwitchEndpoint` WRITE;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
--
-- Table structure for table `currency`
--
CREATE TABLE `currency` (
LOCK TABLES `currency` WRITE;
/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
-INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-28 09:07:47'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-28 09:07:47'),('AFN','Afghanistan afghani',1,'2019-03-28 09:07:47'),('ALL','Albanian lek',1,'2019-03-28 09:07:47'),('AMD','Armenian dram',1,'2019-03-28 09:07:47'),('ANG','Netherlands Antillian guilder',1,'2019-03-28 09:07:47'),('AOA','Angolan kwanza',1,'2019-03-28 09:07:47'),('AOR','Angolan kwanza reajustado',1,'2019-03-28 09:07:47'),('ARS','Argentine peso',1,'2019-03-28 09:07:47'),('AUD','Australian dollar',1,'2019-03-28 09:07:47'),('AWG','Aruban guilder',1,'2019-03-28 09:07:47'),('AZN','Azerbaijanian new manat',1,'2019-03-28 09:07:47'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-28 09:07:47'),('BBD','Barbados dollar',1,'2019-03-28 09:07:47'),('BDT','Bangladeshi taka',1,'2019-03-28 09:07:47'),('BGN','Bulgarian lev',1,'2019-03-28 09:07:47'),('BHD','Bahraini dinar',1,'2019-03-28 09:07:47'),('BIF','Burundi franc',1,'2019-03-28 09:07:47'),('BMD','Bermudian dollar',1,'2019-03-28 09:07:47'),('BND','Brunei dollar',1,'2019-03-28 09:07:47'),('BOB','Bolivian boliviano',1,'2019-03-28 09:07:47'),('BRL','Brazilian real',1,'2019-03-28 09:07:47'),('BSD','Bahamian dollar',1,'2019-03-28 09:07:47'),('BTN','Bhutan ngultrum',1,'2019-03-28 09:07:47'),('BWP','Botswana pula',1,'2019-03-28 09:07:47'),('BYN','Belarusian ruble',1,'2019-03-28 09:07:47'),('BZD','Belize dollar',1,'2019-03-28 09:07:47'),('CAD','Canadian dollar',1,'2019-03-28 09:07:47'),('CDF','Congolese franc',1,'2019-03-28 09:07:47'),('CHF','Swiss franc',1,'2019-03-28 09:07:47'),('CLP','Chilean peso',1,'2019-03-28 09:07:47'),('CNY','Chinese yuan renminbi',1,'2019-03-28 09:07:47'),('COP','Colombian peso',1,'2019-03-28 09:07:47'),('CRC','Costa Rican colon',1,'2019-03-28 09:07:47'),('CUC','Cuban convertible peso',1,'2019-03-28 09:07:47'),('CUP','Cuban peso',1,'2019-03-28 09:07:47'),('CVE','Cape Verde escudo',1,'2019-03-28 09:07:47'),('CZK','Czech koruna',1,'2019-03-28 09:07:47'),('DJF','Djibouti franc',1,'2019-03-28 09:07:47'),('DKK','Danish krone',1,'2019-03-28 09:07:47'),('DOP','Dominican peso',1,'2019-03-28 09:07:47'),('DZD','Algerian dinar',1,'2019-03-28 09:07:47'),('EEK','Estonian kroon',1,'2019-03-28 09:07:47'),('EGP','Egyptian pound',1,'2019-03-28 09:07:47'),('ERN','Eritrean nakfa',1,'2019-03-28 09:07:47'),('ETB','Ethiopian birr',1,'2019-03-28 09:07:47'),('EUR','EU euro',1,'2019-03-28 09:07:47'),('FJD','Fiji dollar',1,'2019-03-28 09:07:47'),('FKP','Falkland Islands pound',1,'2019-03-28 09:07:47'),('GBP','British pound',1,'2019-03-28 09:07:47'),('GEL','Georgian lari',1,'2019-03-28 09:07:47'),('GGP','Guernsey pound',1,'2019-03-28 09:07:47'),('GHS','Ghanaian new cedi',1,'2019-03-28 09:07:47'),('GIP','Gibraltar pound',1,'2019-03-28 09:07:47'),('GMD','Gambian dalasi',1,'2019-03-28 09:07:47'),('GNF','Guinean franc',1,'2019-03-28 09:07:47'),('GTQ','Guatemalan quetzal',1,'2019-03-28 09:07:47'),('GYD','Guyana dollar',1,'2019-03-28 09:07:47'),('HKD','Hong Kong SAR dollar',1,'2019-03-28 09:07:47'),('HNL','Honduran lempira',1,'2019-03-28 09:07:47'),('HRK','Croatian kuna',1,'2019-03-28 09:07:47'),('HTG','Haitian gourde',1,'2019-03-28 09:07:47'),('HUF','Hungarian forint',1,'2019-03-28 09:07:47'),('IDR','Indonesian rupiah',1,'2019-03-28 09:07:47'),('ILS','Israeli new shekel',1,'2019-03-28 09:07:47'),('IMP','Isle of Man pound',1,'2019-03-28 09:07:47'),('INR','Indian rupee',1,'2019-03-28 09:07:47'),('IQD','Iraqi dinar',1,'2019-03-28 09:07:47'),('IRR','Iranian rial',1,'2019-03-28 09:07:47'),('ISK','Icelandic krona',1,'2019-03-28 09:07:47'),('JEP','Jersey pound',1,'2019-03-28 09:07:47'),('JMD','Jamaican dollar',1,'2019-03-28 09:07:47'),('JOD','Jordanian dinar',1,'2019-03-28 09:07:47'),('JPY','Japanese yen',1,'2019-03-28 09:07:47'),('KES','Kenyan shilling',1,'2019-03-28 09:07:47'),('KGS','Kyrgyz som',1,'2019-03-28 09:07:47'),('KHR','Cambodian riel',1,'2019-03-28 09:07:47'),('KMF','Comoros franc',1,'2019-03-28 09:07:47'),('KPW','North Korean won',1,'2019-03-28 09:07:47'),('KRW','South Korean won',1,'2019-03-28 09:07:47'),('KWD','Kuwaiti dinar',1,'2019-03-28 09:07:47'),('KYD','Cayman Islands dollar',1,'2019-03-28 09:07:47'),('KZT','Kazakh tenge',1,'2019-03-28 09:07:47'),('LAK','Lao kip',1,'2019-03-28 09:07:47'),('LBP','Lebanese pound',1,'2019-03-28 09:07:47'),('LKR','Sri Lanka rupee',1,'2019-03-28 09:07:47'),('LRD','Liberian dollar',1,'2019-03-28 09:07:47'),('LSL','Lesotho loti',1,'2019-03-28 09:07:47'),('LTL','Lithuanian litas',1,'2019-03-28 09:07:47'),('LVL','Latvian lats',1,'2019-03-28 09:07:47'),('LYD','Libyan dinar',1,'2019-03-28 09:07:47'),('MAD','Moroccan dirham',1,'2019-03-28 09:07:47'),('MDL','Moldovan leu',1,'2019-03-28 09:07:47'),('MGA','Malagasy ariary',1,'2019-03-28 09:07:47'),('MKD','Macedonian denar',1,'2019-03-28 09:07:47'),('MMK','Myanmar kyat',1,'2019-03-28 09:07:47'),('MNT','Mongolian tugrik',1,'2019-03-28 09:07:47'),('MOP','Macao SAR pataca',1,'2019-03-28 09:07:47'),('MRO','Mauritanian ouguiya',1,'2019-03-28 09:07:47'),('MUR','Mauritius rupee',1,'2019-03-28 09:07:47'),('MVR','Maldivian rufiyaa',1,'2019-03-28 09:07:47'),('MWK','Malawi kwacha',1,'2019-03-28 09:07:47'),('MXN','Mexican peso',1,'2019-03-28 09:07:47'),('MYR','Malaysian ringgit',1,'2019-03-28 09:07:47'),('MZN','Mozambique new metical',1,'2019-03-28 09:07:47'),('NAD','Namibian dollar',1,'2019-03-28 09:07:47'),('NGN','Nigerian naira',1,'2019-03-28 09:07:47'),('NIO','Nicaraguan cordoba oro',1,'2019-03-28 09:07:47'),('NOK','Norwegian krone',1,'2019-03-28 09:07:47'),('NPR','Nepalese rupee',1,'2019-03-28 09:07:47'),('NZD','New Zealand dollar',1,'2019-03-28 09:07:47'),('OMR','Omani rial',1,'2019-03-28 09:07:47'),('PAB','Panamanian balboa',1,'2019-03-28 09:07:47'),('PEN','Peruvian nuevo sol',1,'2019-03-28 09:07:47'),('PGK','Papua New Guinea kina',1,'2019-03-28 09:07:47'),('PHP','Philippine peso',1,'2019-03-28 09:07:47'),('PKR','Pakistani rupee',1,'2019-03-28 09:07:47'),('PLN','Polish zloty',1,'2019-03-28 09:07:47'),('PYG','Paraguayan guarani',1,'2019-03-28 09:07:47'),('QAR','Qatari rial',1,'2019-03-28 09:07:47'),('RON','Romanian new leu',1,'2019-03-28 09:07:47'),('RSD','Serbian dinar',1,'2019-03-28 09:07:47'),('RUB','Russian ruble',1,'2019-03-28 09:07:47'),('RWF','Rwandan franc',1,'2019-03-28 09:07:47'),('SAR','Saudi riyal',1,'2019-03-28 09:07:47'),('SBD','Solomon Islands dollar',1,'2019-03-28 09:07:47'),('SCR','Seychelles rupee',1,'2019-03-28 09:07:47'),('SDG','Sudanese pound',1,'2019-03-28 09:07:47'),('SEK','Swedish krona',1,'2019-03-28 09:07:47'),('SGD','Singapore dollar',1,'2019-03-28 09:07:47'),('SHP','Saint Helena pound',1,'2019-03-28 09:07:47'),('SLL','Sierra Leone leone',1,'2019-03-28 09:07:47'),('SOS','Somali shilling',1,'2019-03-28 09:07:47'),('SPL','Seborgan luigino',1,'2019-03-28 09:07:47'),('SRD','Suriname dollar',1,'2019-03-28 09:07:47'),('STD','Sao Tome and Principe dobra',1,'2019-03-28 09:07:47'),('SVC','El Salvador colon',1,'2019-03-28 09:07:47'),('SYP','Syrian pound',1,'2019-03-28 09:07:47'),('SZL','Swaziland lilangeni',1,'2019-03-28 09:07:47'),('THB','Thai baht',1,'2019-03-28 09:07:47'),('TJS','Tajik somoni',1,'2019-03-28 09:07:47'),('TMT','Turkmen new manat',1,'2019-03-28 09:07:47'),('TND','Tunisian dinar',1,'2019-03-28 09:07:47'),('TOP','Tongan pa\'anga',1,'2019-03-28 09:07:47'),('TRY','Turkish lira',1,'2019-03-28 09:07:47'),('TTD','Trinidad and Tobago dollar',1,'2019-03-28 09:07:47'),('TVD','Tuvaluan dollar',1,'2019-03-28 09:07:47'),('TWD','Taiwan New dollar',1,'2019-03-28 09:07:47'),('TZS','Tanzanian shilling',1,'2019-03-28 09:07:47'),('UAH','Ukrainian hryvnia',1,'2019-03-28 09:07:47'),('UGX','Uganda new shilling',1,'2019-03-28 09:07:47'),('USD','US dollar',1,'2019-03-28 09:07:47'),('UYU','Uruguayan peso uruguayo',1,'2019-03-28 09:07:47'),('UZS','Uzbekistani sum',1,'2019-03-28 09:07:47'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-28 09:07:47'),('VND','Vietnamese dong',1,'2019-03-28 09:07:47'),('VUV','Vanuatu vatu',1,'2019-03-28 09:07:47'),('WST','Samoan tala',1,'2019-03-28 09:07:47'),('XAF','CFA franc BEAC',1,'2019-03-28 09:07:47'),('XAG','Silver (ounce)',1,'2019-03-28 09:07:47'),('XAU','Gold (ounce)',1,'2019-03-28 09:07:47'),('XCD','East Caribbean dollar',1,'2019-03-28 09:07:47'),('XDR','IMF special drawing right',1,'2019-03-28 09:07:47'),('XFO','Gold franc',1,'2019-03-28 09:07:47'),('XFU','UIC franc',1,'2019-03-28 09:07:47'),('XOF','CFA franc BCEAO',1,'2019-03-28 09:07:47'),('XPD','Palladium (ounce)',1,'2019-03-28 09:07:47'),('XPF','CFP franc',1,'2019-03-28 09:07:47'),('XPT','Platinum (ounce)',1,'2019-03-28 09:07:47'),('YER','Yemeni rial',1,'2019-03-28 09:07:47'),('ZAR','South African rand',1,'2019-03-28 09:07:47'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-28 09:07:47'),('ZMW','Zambian kwacha',1,'2019-03-28 09:07:47'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-28 09:07:47'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-28 09:07:47'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-28 09:07:47'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-28 09:07:47');
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `endpointType` (
LOCK TABLES `endpointType` WRITE;
/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
-INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-28 09:07:47');
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `migration` (
`batch` int(11) DEFAULT NULL,
`migration_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
CREATE TABLE `migration` (
LOCK TABLES `migration` WRITE;
/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
-INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-28 11:07:46'),(2,'02_endpointType.js',1,'2019-03-28 11:07:46'),(3,'03_endpointType-indexes.js',1,'2019-03-28 11:07:46'),(4,'04_partyIdType.js',1,'2019-03-28 11:07:46'),(5,'05_partyIdType-indexes.js',1,'2019-03-28 11:07:46'),(6,'08_oracleEndpoint.js',1,'2019-03-28 11:07:47'),(7,'09_oracleEndpoint-indexes.js',1,'2019-03-28 11:07:47');
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `oracleEndpoint` (
`oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partyIdTypeId` int(10) unsigned NOT NULL,
`endpointTypeId` int(10) unsigned NOT NULL,
+ `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
`currencyId` varchar(255) DEFAULT NULL,
`value` varchar(512) NOT NULL,
`isDefault` tinyint(1) NOT NULL DEFAULT '0',
CREATE TABLE `oracleEndpoint` (
`createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` varchar(128) NOT NULL,
PRIMARY KEY (`oracleEndpointId`),
+ KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
CREATE TABLE `partyIdType` (
LOCK TABLES `partyIdType` WRITE;
/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
-INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-28 09:07:47'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-28 09:07:47'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-28 09:07:47'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-28 09:07:47'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-28 09:07:47'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-28 09:07:47');
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2019-03-28 11:09:54
+-- Dump completed on 2019-03-18 17:52:06
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-FROM mhart/alpine-node:10.15.1
+ARG PORT=8989
+
+########################
+#### gitbook-builder ###
+########################
+
+FROM node:10.15-alpine as gitbook-builder
+
+ENV PORT $PORT
WORKDIR /opt/gitbook
COPY . /opt/gitbook
-RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
+RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake graphviz ttf-droid ttf-droid-nonlatin curl
+
+ENV PLANTUML_VERSION 1.2019.3
+ENV LANG en_US.UTF-8
+RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o plantuml.jar
RUN npm install
-#
-#RUN apk del build-dependencies
-EXPOSE 8989
+RUN npm run gitbook:build
-RUN npm run gitbook:install
+########################
+#### gitbook-server ####
+########################
+
+FROM node:10.15-alpine as gitbook-server
+
+ENV PORT $PORT
+
+WORKDIR /opt/gitbook
+COPY --from=gitbook-builder /opt/gitbook .
-#RUN npm run gitbook:build
+EXPOSE $PORT
-CMD npm run gitbook:serveNoReload
+CMD npm run express:run
# Table of contents
* [Mojaloop Overview](README.md)
-* [Deployment Guide](deployment-guide/README.md)
- * [Current Version](deployment-guide/current-versions.md)
- * [Local Setup Linux](deployment-guide/mojaloop-local-setup-linux.md)
- * [Local Setup Mac](deployment-guide/mojaloop-local-setup-mac.md)
- * [Local Setup Windows](deployment-guide/mojaloop-local-setup-windows.md)
- * [Troubleshooting](deployment-guide/mojaloop-deployment-troubleshooting.md)
* [Contributors Guide](contributors-guide/README.md)
+ * [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
+ * [Current Version](contributors-guide/mojaloop-deployment/current-versions.md)
* [Standards](contributors-guide/standards/README.md)
* [Versioning](contributors-guide/standards/versioning.md)
* [Creating new Features](contributors-guide/standards/creating-new-features.md)
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
* [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
* [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
+ * [POST Participants (batch)](mojaloop-technical-overview/account-lookup-service/als-post-participants-batch.md)
+ * [DEL Participants](mojaloop-technical-overview/account-lookup-service/als-del-participants.md)
* [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
* [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [Helm](repositories/helm.md)
* [Project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
+* [Glossary of Terms](glossary.md)
* [Changelog](changelog.md)
Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.d
* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
+### Versions
+
+| Version | Info | Release Date |
+| --- | --- | --- |
+| 1.0 | Initial release | 2018-11-01 |
+| | | |
+
## ALS Oracle API
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
Notes:
- `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- `GET /participants` response body returns a list of Participants, containing `currency`.
- `POST /participants` request body includes the `currency` as part of each record.
+
+### Versions
+
+| Version | Info | Release Date |
+| --- | --- | --- |
+| 1.1 | `PUT /participants/{Type}/{ID}` returns a `HTTP 204 - No Content on success`. This was previously returned `HTTP 200 - Success` `POST /participants` now returns a list a `partyList` either containing a `PartyIdInfo` or `ErrorInformation`. This is alignment to the Mojaloop Specification. | 2019-03-28 |
+| 1.0 | Initial release | 2019-03-08 |
+| | | |
\ No newline at end of file
+---
+showToc: false
+---
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
swagger: '2.0'
info:
- version: '1.0'
+ version: '1.1'
title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
contact: {}
basePath: /
schemes: []
consumes:
- - application/json
+- application/json
produces:
- - application/json
+- application/json
paths:
/participants/{Type}/{ID}:
get:
description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Look up participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDGet
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
200:
description: OK
paths:
description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
summary: Return participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPut
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: accept
- in: header
- required: false
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
- 200:
- description: OK
+ 204:
+ description: No Content
headers: {}
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
paths:
description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
summary: Create participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
201:
description: Created
paths:
description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Delete participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDDelete
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
204:
description: No Content
paths:
description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
summary: Batch create participant information #fail these as a batch or accept it as a batch
tags:
- - participants
+ - participants
operationId: ParticipantsPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsPostRequest'
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
201:
description: Created
headers: {}
+ schema:
+ $ref: '#/definitions/ParticipantsIDPutResponse'
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
schema:
definitions:
example: AED
type: string
enum:
- - AED
- - AFN
- - ALL
- - AMD
- - ANG
- - AOA
- - ARS
- - AUD
- - AWG
- - AZN
- - BAM
- - BBD
- - BDT
- - BGN
- - BHD
- - BIF
- - BMD
- - BND
- - BOB
- - BRL
- - BSD
- - BTN
- - BWP
- - BYN
- - BZD
- - CAD
- - CDF
- - CHF
- - CLP
- - CNY
- - COP
- - CRC
- - CUC
- - CUP
- - CVE
- - CZK
- - DJF
- - DKK
- - DOP
- - DZD
- - EGP
- - ERN
- - ETB
- - EUR
- - FJD
- - FKP
- - GBP
- - GEL
- - GGP
- - GHS
- - GIP
- - GMD
- - GNF
- - GTQ
- - GYD
- - HKD
- - HNL
- - HRK
- - HTG
- - HUF
- - IDR
- - ILS
- - IMP
- - INR
- - IQD
- - IRR
- - ISK
- - JEP
- - JMD
- - JOD
- - JPY
- - KES
- - KGS
- - KHR
- - KMF
- - KPW
- - KRW
- - KWD
- - KYD
- - KZT
- - LAK
- - LBP
- - LKR
- - LRD
- - LSL
- - LYD
- - MAD
- - MDL
- - MGA
- - MKD
- - MMK
- - MNT
- - MOP
- - MRO
- - MUR
- - MVR
- - MWK
- - MXN
- - MYR
- - MZN
- - NAD
- - NGN
- - NIO
- - NOK
- - NPR
- - NZD
- - OMR
- - PAB
- - PEN
- - PGK
- - PHP
- - PKR
- - PLN
- - PYG
- - QAR
- - RON
- - RSD
- - RUB
- - RWF
- - SAR
- - SBD
- - SCR
- - SDG
- - SEK
- - SGD
- - SHP
- - SLL
- - SOS
- - SPL
- - SRD
- - STD
- - SVC
- - SYP
- - SZL
- - THB
- - TJS
- - TMT
- - TND
- - TOP
- - TRY
- - TTD
- - TVD
- - TWD
- - TZS
- - UAH
- - UGX
- - USD
- - UYU
- - UZS
- - VEF
- - VND
- - VUV
- - WST
- - XAF
- - XCD
- - XDR
- - XOF
- - XPF
- - YER
- - ZAR
- - ZMW
- - ZWD
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
PartyIdTypeEnum:
title: PartyIdTypeEnum
description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
example: MSISDN
type: string
enum:
- - MSISDN
- - EMAIL
- - PERSONAL_ID
- - BUSINESS
- - DEVICE
- - ACCOUNT_ID
- - IBAN
- - ALIAS
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
ErrorInformation:
title: ErrorInformation
description: Data model for the complex type ErrorInformation.
definitions:
extensionList:
$ref: '#/definitions/ExtensionList'
required:
- - errorCode
- - errorDescription
+ - errorCode
+ - errorDescription
ErrorInformationResponse:
title: ErrorInformationResponse
description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
definitions:
description: Extension value.
type: string
required:
- - key
- - value
+ - key
+ - value
ExtensionList:
title: ExtensionList
description: Data model for the complex type ExtensionList
definitions:
minItems: 1
maxItems: 16
required:
- - extension
+ - extension
ParticipantsTypeIDGetResponse:
title: ParticipantsTypeIDGetResponse
description: OK
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
ParticipantsPostRequest:
title: ParticipantsPostRequest
description: POST /participants object
definitions:
minItems: 1
maxItems: 10000
required:
- - requestId
- - partyList
+ - requestId
+ - partyList
PartyIdInfo:
title: PartyIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
type: string
required:
- - partyIdType
- - partyIdentifier
+ - partyIdType
+ - partyIdentifier
+ ParticipantsIDPutResponse:
+ title: ParticipantsIDPutResponse
+ type: object
+ description: PUT /participants/{ID} object
+ properties:
+ partyList:
+ type: array
+ items:
+ $ref: '#/definitions/PartyResult'
+ minItems: 1
+ maxItems: 10000
+ description: List of PartyResult elements that were either created or failed to be created.
+ currency:
+ type: string
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ required:
+ - partyList
+ PartyResult:
+ title: PartyResult
+ type: object
+ description: Data model for the complex type PartyResult.
+ properties:
+ partyId:
+ $ref: '#/definitions/PartyIdInfo'
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ required:
+ - partyId
PartyTypeIdInfo:
title: PartyTypeIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
tags:
- - name: participants
- description: ''
+- name: participants
+ description: ''
+---
+showToc: false
+---
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
\ No newline at end of file
/assets/images/uml/.gitkeep b/assets/images/uml/.gitkeep
new file mode 100644
index 0000000..e69de29
In general, we are looking for example implementations and bug fixes, and projec
Join the [Mojaloop Slack Discussions](https://mojaloop-slack.herokuapp.com/) to connect with other developers.
-Also checkout the [FAQ](https://github.com/mojaloop/documentation/blob/master/contributors-guide/frequently-asked-questions.md)
+Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
### What is the current release?
+# Mojaloop Deployment
+
+## Deployment and Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+* [Software List](./#1-software-list)
+ * [Deployment Recommendations](./#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](./#12-local-deployment-and-testing-tools)
+* [Deployment](./#2-deployment)
+ * [Kubernetes](./#21-kubernetes)
+ * [Kubernetes Installation with Docker](./#211-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](./#212-kubernetes-environment-setup)
+ * [Helm](./#22-helm)
+ * [Helm Chart Installation](./#221-helm-chart-installation)
+ * [Postman](./#23-postman)
+ * [Installing Postman](./#231-installing-postman)
+ * [Setup Postman](./#231-setup-postman)
+* [Errors During Setup](./#24-errors-on-setup)
+
+## 1 Software List
+
+Before proceeding, please have a look at [Deployment Recommendations](./#11-deployment-recommendations) to insure the minimum resource requirements are available.
+
+### 1.1 Deployment Recommendations
+
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+**Resources Requirements:**
+
+* Control Plane (i.e. Master Node)
+
+ [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+
+
+ * 3x Master Nodes for future node scaling and HA (High Availability)
+
+* ETCd Plane:
+
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+
+ * 3x ETCd nodes for HA (High Availability)
+
+* Compute Plane (i.e. Worker Node):
+
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+#### 1.2 Local Deployment and Testing Tools
+
+### 1.2 Local Deployment and Testing Tools
+
+The tool set to be deployed as part of the deployment process.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Install Info
+
+
+
+
+ Docker
+ Required
+
+ Docker Engine and CLI Client
+ Local Kubernetes single node cluster
+
+ [https://docs.docker.com/install](https://docs.docker.com/install)
+
+
+ Kubectl
+ Required
+
+ Kubernetes CLI for Kubernetes Management
+ Note Docker installs this part of Kubernetes install
+
+
+ [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)
+ Docker Kubernetes Install (as per this guide)
+ Mac: `brew install kubernetes-cli`
+ Ubuntu: `sudo snap install kubectl --classic`
+
+
+
+ Kubectx
+ Optional(useful tool)
+
+ Kubernetes CLI for Kubernetes Context Management Helper
+ Note Docker installs this as part of Kubernetes install
+
+
+ [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
+ Mac: `brew install kubectx`
+ Ubuntu: `sudo apt install kubectx`
+
+
+
+ Kubetail
+ Optional(useful tool)
+
+ Bash script that enables you to aggregate (tail/follow) logs from multiple
+ pods into one stream. This is the same as running `kubectl logs -f` but
+ for multiple pods.
+ Example usage `kubetail moja.* -n demo`
+
+ https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+
+ Helm helps you manage Kubernetes applications
+ Helm charts help you define, install and upgrade even the most complex
+ Kubernetes application
+
+
+ [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
+ Mac: `brew install kubernetes-helm`
+ Ubuntu: `sudo snap install helm --classic`
+
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's.
+ It presents you with a friendly GUI for the construction requests and reading
+ responces.
+ [https://www.getpostman.com/apps](https://www.getpostman.com/apps)
+
+
+## 2 Deployment
+
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+### 2.1 Kubernetes
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 2.1.1 Kubernetes Installation with Docker
+
+**Ubuntu**
+
+Note - Kubernetes with Docker is currently **not** available on Linux\(Ubuntu\) - please refer to; [https://forums.docker.com/](https://forums.docker.com/t/is-there-a-built-in-kubernetes-in-docker-ce-for-linux/54374)
+
+We recommend installing a minikube local environment by follow the steps below;
+
+With reference to [https://kubernetes.io/docs/tasks/tools/install-minikube/](https://kubernetes.io/docs/tasks/tools/install-minikube/)
+
+* VT-x or AMD-v virtualization must be enabled in your computer’s BIOS. To check this on Linux run the following and verify the output is **non-empty**:
+
+ ```bash
+ egrep --color 'vmx|svm' /proc/cpuinfo
+ ```
+
+* Install a Hypervisor:
+
+ * [KVM](http://www.linux-kvm.org/) - Recommended Linux driver
+
+ or
+
+ * [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
+
+* **kubectl** should already be installed. To verify, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+ If an error is returned, please refer to [Local Deployment and Testing Tools](./#12-local-deployment-and-testing-tools).
+
+* **minikube** installation
+
+ ```bash
+ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
+ ```
+
+* Start a cluster by running:
+
+ **Note** - if you have install KVM as the Hypervisor, you might need to include `--vm-driver=KVM` in the startup command. The default is to startup with VirtualBox.
+
+ ```bash
+ minikube start
+ ```
+
+ Once successfully started, you can interact with your cluster using kubectl, just like any other Kubernetes cluster.
+
+* Lunching the Minikube Dashboard
+
+ The minikube dashboard can be opened and access via your default browser.
+
+ ```bash
+ minikube dashboard
+ ```
+
+ Continue from the **Config Helm CLI and install Helm Tiller...** section below.
+
+**Mac**
+
+To install Kubernetes with Docker, follow the steps below;
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
+
+
+
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
+
+
+
+#### 2.1.2 Kubernetes environment setup:
+
+The following are all command line executables specifically for **Mac**. 1. List the current Kubernetes context;
+
+```bash
+ kubectl config get-contexts
+```
+
+or
+
+```bash
+ kubectx
+```
+
+1. Change your Contexts;
+
+ ```bash
+ kubectl config use-contexts
+ ```
+
+ or
+
+ ```bash
+ kubectx docker-for-desktop
+ ```
+
+2. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+3. Verify Kubernetes Dashboard;
+
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+
+4. Start proxy for local UI in new terminal;
+
+ ```bash
+ kubectl proxy ui
+ ```
+
+5. Open URI in default browser
+
+ ```bash
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+
+ Select **Token**. Generate a token to use there by:
+
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+ The token to use is shown on the last line of the output of that command.
+
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+**Ubuntu** continue from here
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster
+
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running
+
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+
+3. Add mojaloop repo to your Helm config \(optional\)
+
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+5. Update helm repositories
+
+ ```bash
+ helm repro update
+ ```
+
+6. Install nginx-ingress for load balancing & external access
+
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+7. Add the following to your /ect/hosts
+
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+8. Test system health in your browser after installation
+
+ - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
+ - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
+
+
+### 2.2 Helm
+
+Please review [Mojaloop Helm Chart](../../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+**2.2.1 Helm Chart Installation**
+
+This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
+
+1. Lets start by **listing** the current helm charts deployed
+
+ ```bash
+ helm list
+ ```
+
+2. If you would like to **delete** a deployed helm chart
+
+ ```bash
+ helm del --purge moja
+ ```
+
+ **Note:** for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
+
+3. To **install** Mojaloop chart\(s\)
+
+ **Ubuntu** - It might be required to execute `helm install` and `helm upgrade` under `sudo`.
+
+ To install the full mojaloop project
+
+ ```bash
+ helm install --namespace=demo --name=moja mojaloop/mojaloop
+ ```
+
+ Alternative directly from the repository:
+
+ ```bash
+ helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
+ ```
+
+ **or** install a specific mojaloop chart eg. Central-ledger
+
+ ```bash
+ helm install --namespace=demo --name=moja mojaloop/centralledger
+ ```
+
+ Alternative directly from the repository:
+
+ ```bash
+ helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
+ ```
+
+4. To upgrade Mojaloop chart\(s\)
+
+ Note: 'v5.1.1' is an example value.
+
+ ```bash
+ helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
+ ```
+
+5. To upgrade a specific chart eg. Central-ledger
+
+ ```bash
+ helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
+ ```
+
+### 2.3 Postman
+
+Postman is used to send requests and receive responses.
+
+**2.3.1 Installing Postman**
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+Alternatively on **Ubuntu** you may run:
+
+```bash
+wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
+sudo tar -xzf postman.tar.gz -C /opt
+rm postman.tar.gz
+sudo ln -s /opt/Postman/Postman /usr/bin/postman
+```
+
+#### 2.3.1 Setup Postman
+
+* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Open **Postman**
+* Click **Import** and then **Import File**
+* Select the _Mojaloop.postman\_collection.json_ file you downloaded
+* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* Click **Import** and then **Import File**
+* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+* In the imported collection, navigate to the _central\_ledger_ directory
+
+### 2.4 Errors On Setup
+
+* central-ledger’s server IP address could not be found.
+
+ ERR_NAME_NOT_RESOLVED
+
+ Resolved by:
+
+ * Verify that a helm chart(s) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](./#221-helm-chart-installation) section to install a chart.
+########################
+#### gitbook-builder ###
+########################
+
+FROM node:10.15-alpine as gitbook-builder
+
+WORKDIR /opt/gitbook
+COPY . /opt/gitbook
+
+RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake graphviz ttf-droid ttf-droid-nonlatin curl
+
+ENV PLANTUML_VERSION 1.2019.3
+ENV LANG en_US.UTF-8
+RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o plantuml.jar
+
+RUN npm install
+
+########################
+#### gitbook-server ####
+########################
+
+FROM node:10.15-alpine as gitbook-server
+
+WORKDIR /opt/gitbook
+COPY --from=gitbook-builder /opt/gitbook .
+
+RUN apk add --no-cache -t build-dependencies git make gcc g++ python libtool autoconf automake
+
+EXPOSE 8989
+
+CMD npm run gitbook:serveNoReload
+# Glossary of Terms
+
+| Term | Definition | Notes |
+| --- | --- | --- |
+| DFSP | Digital Financial Service Provider | |
+| FSP | Financial Service Provider | |
+| K8s | Short name for [Kubernetes](https://kubernetes.io/) | Read more here [https://kubernetes.io](https://kubernetes.io) |
+| ALS | [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md) | Refer to [Documentation](mojaloop-technical-overview/account-lookup-service/README.md) |
+/*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+
+ * Gates Foundation
+ - Name Surname
+
+ * Miguel de Barros
+
+ --------------
+ ******/
+
+const express = require('express')
+const app = express()
+app.use(express.static(__dirname + '/_book'))
+
+app.listen(process.env.PORT || 8989)
Use-cases that have been implemented over and above for Hub Operational use:
### 1.1 Account Lookup Service (ALS)
The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+#### 1.1.1 Assumptions
+
+* The ALS design will only cater for a single switch for the time being.
+* Support for multiple switches will utilise the same DNS resolution mechanism that is being developed for the Cross Border/Network design.
+
+#### 1.1.2 Routing
+
The routing configuration will be based on the following:
* PartyIdType - See section `7.5.6` of the Mojaloop Specification
-* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
-* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, however `isDefault` indicator must be set to `true` if the `Currency` is not provided.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+
### 1.2 ALS Oracle
The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
_Note: The Participant Lookup use-case similarly applies to for a Payee Initiate
#### 2.2.1 GET Participant
-[Sequence Diagram for GET Participants](als-get-participants.md)
+- [Sequence Diagram for GET Participants](als-get-participants.md)
#### 2.2.2 POST Participant
-[Sequence Diagram for POST Participants](als-post-participants.md)
+- [Sequence Diagram for POST Participants](als-post-participants.md)
+
+#### 2.2.3 POST Participant (Batch)
+
+- [Sequence Diagram for POST Participants (Batch)](als-post-participants-batch.md)
+
+#### 2.2.4 DEL Participant
+
+- [Sequence Diagram for DEL Participants](als-del-participants.md)
## 3. Party Lookup Design
_Note: The Participant Lookup use-case similarly applies to for a Payee Initiate
#### 3.2.1 GET Parties
-[Sequence Diagram for GET Parties](als-get-parties.md)
+- [Sequence Diagram for GET Parties](als-get-parties.md)
## 4. Database Design
+# DEL Participants
+
+Design for the deletion of a Participant by a DFSP.
+
+## Notes
+- Reference section 6.2.2.4 - Note: The ALS should verify that it is the Party’s current FSP that is deleting the FSP information. ~ This has been addressed in the design by insuring that the Party currently belongs to the FSPs requesting the deletion of the record. Any other validations are out of scope for the Switch and should be addressed at the schema level.
+
+## Sequence Diagram
+
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-del-participants-7.1.2.plantuml" %}
+{% enduml %}
# GET Participants
+Design for the retrieval of a Participant by a DFSP.
+
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participants-7.1.0.plantuml" %}
{% enduml %}
# GET Parties
+Design for the retrieval of a Party by a DFSP.
+
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" %}
{% enduml %}
+# Sequence Diagram for POST Participants (Batch)
+
+Design for the creation of a Participant by a DFSP via a batch request.
+
+## Notes
+- Operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+- Duplicate POST Requests with matching TYPE and optional CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+
+## Sequence Diagram
+
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-batch-7.1.1.plantuml" %}
+{% enduml %}
# Sequence Diagram for POST Participants
-## Notes
-- Operation only supports requests which contain:
- - All Participant's FSPs match the FSPIOP-Source
- - All Participant's TYPEs are the same
- - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
-
-## Sequence Diagram
-
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
-{% enduml %}
+Coming soon.
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A10. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A9. User Lookup GET /parties/<idType>/<id>A9. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A11. User Lookup PUT /parties/<idType>/<id>A11. User Lookup <br>PUT /parties/<idType>/<id>A14. User Lookup PUT /parties/<idType>/<id>A14. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA8. Retrieve Participant End-point DataA8. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A12. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA6. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A13. Retrieve Participant End-point Data<font style="font-size: 13px">A13. Retrieve Participant End-point Data</font>
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.2. Delete Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistence Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+actor "Payee FSP" as PAYEE_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+'entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Parties\nFSP DAO" as ALS_PARTIES_FSP_DAO
+entity "ALS Participant Endpoint\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+participant ALS_PARTIES_FSP_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Financial Service Provider" #LightGrey
+participant PAYEE_FSP
+end box
+
+' START OF FLOW
+
+group Get Party Details
+ PAYER_FSP ->> ALS_API: Request to delete Participant details\nDEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to delete Participant details
+
+ alt oracleEndpoint match found & parties information retrieved
+ activate ALS_PARTICIPANT_HANDLER
+ '********************* Retrieve Oracle Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
+ '********************* Retrieve Switch Routing Information - START ************************
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
+ '********************* Retrieve Switch Routing Information - END ************************
+
+ |||
+
+ '********************* Validate FSPIOP-Source Participant - START ************************
+ group Validate FSPIOP-Source Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request FSPIOP-Source participant information\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{FSPIOP-Source}\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return FSPIOP-Source participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return FSPIOP-Source participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate FSPIOP-Source participant\nError code: 320x
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId == FSPIOP-Source\nError code: 3100
+ end group
+ '********************* Validate Participant - END ************************
+
+ |||
+
+ '********************* Request Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information for PayerFSP\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ORACLE_API
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Request Participant Information from Oracle Sequence]]
+ |||
+ end ref
+
+ '********************* Request Oracle Participant Information - END ************************
+
+ |||
+
+ '********************* Validate Participant Ownership - START ************************
+ ' Reference section 6.2.2.4 - Note: The ALS should verify that it is the Party’s current FSP that is deleting the FSP information. Is this adequate?
+ group Validate Participant Ownership
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId matches Participant Information retrieved from Oracle.\nError code: 3100
+ end group
+ '********************* Validate Participant - END ************************
+
+ |||
+
+ '********************* Delete Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to delete Participant's FSP details DEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to delete Participant's FSP details DEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result
+ deactivate ORACLE_API
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Delete Oracle Participant Information - END ************************
+ |||
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return delete request result
+ ALS_API ->> PAYER_FSP: Callback indiciating success:\nPUT - /participants/{TYPE}/{ID}?currency={CURRENCY}
+
+ else Validation failure or Oracle was unable process delete request
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
@startuml
' declare title
-title 7.1.0. Get Party Details
+title 7.2.0. Get Party Details
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistance Store
+' database - Database Persistence Store
' declare actors
actor "Payer FSP" as PAYER_FSP
group Get Party Details
'********************* Retrieve Oracle Routing Information - END ************************
|||
'********************* Retrieve Switch Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
- ref over ALS_PARTICIPANT_HANDLER, ALS_DB
- GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
- |||
- end ref
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
'********************* Retrieve Switch Routing Information - END ************************
|||
group Validate FSPIOP-Source Participant
group Get Party Details
'********************* Request Parties Information - END ************************
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- '********************* Get PayeeFSP Participant Information - START ************************
+ '********************* Get PayeeFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.1. Post Participant (Batch) Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistence Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ loop for Participant in ParticipantList
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map (ParticipantMap) based on {TYPE}
+
+ end loop
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ alt Validation passed and the ParticipantMap was created successfully
+
+ loop for keys in ParticipantMap -> TypeKey
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config based on TypeKey (and optional Currency)\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+' '********************* Fetch Oracle Routing Information - END ************************
+'
+' '********************* Retrieve Switch Routing Information - START ************************
+'
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' |||
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
+'
+' '********************* Retrieve Switch Routing Information - END ************************
+' |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant's FSP
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant (PARTICIPANT.fspId) information for {TypeKey}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Store results in ParticipantResultMap[TypeKey]
+
+ end loop
+
+ loop for keys in ParticipantResultMap -> TypeKey
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Combine ParticipantResultMap[TypeKey] results into ParticipantResult
+ end loop
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP (FSPIOP-Source) Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information from ParticipantResult
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Validation failure and/or the ParticipantMap was not created successfully
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP (FSPIOP-Source) Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
---
--- Table structure for table `centralSwitchEndpoint`
---
-
-DROP TABLE IF EXISTS `centralSwitchEndpoint`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `centralSwitchEndpoint` (
- `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(255) DEFAULT NULL,
- `description` varchar(512) DEFAULT NULL,
- `endpointTypeId` int(10) unsigned NOT NULL,
- `value` varchar(512) NOT NULL,
- `isDefault` tinyint(1) NOT NULL DEFAULT '0',
- `isActive` tinyint(1) NOT NULL DEFAULT '1',
- `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
- `createdBy` varchar(128) NOT NULL,
- PRIMARY KEY (`centralSwitchEndpointId`),
- KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
- CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `centralSwitchEndpoint`
---
-
-LOCK TABLES `centralSwitchEndpoint` WRITE;
-/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
-/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
-UNLOCK TABLES;
-
--
-- Table structure for table `currency`
--
CREATE TABLE `currency` (
LOCK TABLES `currency` WRITE;
/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
-INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-28 09:07:47'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-28 09:07:47'),('AFN','Afghanistan afghani',1,'2019-03-28 09:07:47'),('ALL','Albanian lek',1,'2019-03-28 09:07:47'),('AMD','Armenian dram',1,'2019-03-28 09:07:47'),('ANG','Netherlands Antillian guilder',1,'2019-03-28 09:07:47'),('AOA','Angolan kwanza',1,'2019-03-28 09:07:47'),('AOR','Angolan kwanza reajustado',1,'2019-03-28 09:07:47'),('ARS','Argentine peso',1,'2019-03-28 09:07:47'),('AUD','Australian dollar',1,'2019-03-28 09:07:47'),('AWG','Aruban guilder',1,'2019-03-28 09:07:47'),('AZN','Azerbaijanian new manat',1,'2019-03-28 09:07:47'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-28 09:07:47'),('BBD','Barbados dollar',1,'2019-03-28 09:07:47'),('BDT','Bangladeshi taka',1,'2019-03-28 09:07:47'),('BGN','Bulgarian lev',1,'2019-03-28 09:07:47'),('BHD','Bahraini dinar',1,'2019-03-28 09:07:47'),('BIF','Burundi franc',1,'2019-03-28 09:07:47'),('BMD','Bermudian dollar',1,'2019-03-28 09:07:47'),('BND','Brunei dollar',1,'2019-03-28 09:07:47'),('BOB','Bolivian boliviano',1,'2019-03-28 09:07:47'),('BRL','Brazilian real',1,'2019-03-28 09:07:47'),('BSD','Bahamian dollar',1,'2019-03-28 09:07:47'),('BTN','Bhutan ngultrum',1,'2019-03-28 09:07:47'),('BWP','Botswana pula',1,'2019-03-28 09:07:47'),('BYN','Belarusian ruble',1,'2019-03-28 09:07:47'),('BZD','Belize dollar',1,'2019-03-28 09:07:47'),('CAD','Canadian dollar',1,'2019-03-28 09:07:47'),('CDF','Congolese franc',1,'2019-03-28 09:07:47'),('CHF','Swiss franc',1,'2019-03-28 09:07:47'),('CLP','Chilean peso',1,'2019-03-28 09:07:47'),('CNY','Chinese yuan renminbi',1,'2019-03-28 09:07:47'),('COP','Colombian peso',1,'2019-03-28 09:07:47'),('CRC','Costa Rican colon',1,'2019-03-28 09:07:47'),('CUC','Cuban convertible peso',1,'2019-03-28 09:07:47'),('CUP','Cuban peso',1,'2019-03-28 09:07:47'),('CVE','Cape Verde escudo',1,'2019-03-28 09:07:47'),('CZK','Czech koruna',1,'2019-03-28 09:07:47'),('DJF','Djibouti franc',1,'2019-03-28 09:07:47'),('DKK','Danish krone',1,'2019-03-28 09:07:47'),('DOP','Dominican peso',1,'2019-03-28 09:07:47'),('DZD','Algerian dinar',1,'2019-03-28 09:07:47'),('EEK','Estonian kroon',1,'2019-03-28 09:07:47'),('EGP','Egyptian pound',1,'2019-03-28 09:07:47'),('ERN','Eritrean nakfa',1,'2019-03-28 09:07:47'),('ETB','Ethiopian birr',1,'2019-03-28 09:07:47'),('EUR','EU euro',1,'2019-03-28 09:07:47'),('FJD','Fiji dollar',1,'2019-03-28 09:07:47'),('FKP','Falkland Islands pound',1,'2019-03-28 09:07:47'),('GBP','British pound',1,'2019-03-28 09:07:47'),('GEL','Georgian lari',1,'2019-03-28 09:07:47'),('GGP','Guernsey pound',1,'2019-03-28 09:07:47'),('GHS','Ghanaian new cedi',1,'2019-03-28 09:07:47'),('GIP','Gibraltar pound',1,'2019-03-28 09:07:47'),('GMD','Gambian dalasi',1,'2019-03-28 09:07:47'),('GNF','Guinean franc',1,'2019-03-28 09:07:47'),('GTQ','Guatemalan quetzal',1,'2019-03-28 09:07:47'),('GYD','Guyana dollar',1,'2019-03-28 09:07:47'),('HKD','Hong Kong SAR dollar',1,'2019-03-28 09:07:47'),('HNL','Honduran lempira',1,'2019-03-28 09:07:47'),('HRK','Croatian kuna',1,'2019-03-28 09:07:47'),('HTG','Haitian gourde',1,'2019-03-28 09:07:47'),('HUF','Hungarian forint',1,'2019-03-28 09:07:47'),('IDR','Indonesian rupiah',1,'2019-03-28 09:07:47'),('ILS','Israeli new shekel',1,'2019-03-28 09:07:47'),('IMP','Isle of Man pound',1,'2019-03-28 09:07:47'),('INR','Indian rupee',1,'2019-03-28 09:07:47'),('IQD','Iraqi dinar',1,'2019-03-28 09:07:47'),('IRR','Iranian rial',1,'2019-03-28 09:07:47'),('ISK','Icelandic krona',1,'2019-03-28 09:07:47'),('JEP','Jersey pound',1,'2019-03-28 09:07:47'),('JMD','Jamaican dollar',1,'2019-03-28 09:07:47'),('JOD','Jordanian dinar',1,'2019-03-28 09:07:47'),('JPY','Japanese yen',1,'2019-03-28 09:07:47'),('KES','Kenyan shilling',1,'2019-03-28 09:07:47'),('KGS','Kyrgyz som',1,'2019-03-28 09:07:47'),('KHR','Cambodian riel',1,'2019-03-28 09:07:47'),('KMF','Comoros franc',1,'2019-03-28 09:07:47'),('KPW','North Korean won',1,'2019-03-28 09:07:47'),('KRW','South Korean won',1,'2019-03-28 09:07:47'),('KWD','Kuwaiti dinar',1,'2019-03-28 09:07:47'),('KYD','Cayman Islands dollar',1,'2019-03-28 09:07:47'),('KZT','Kazakh tenge',1,'2019-03-28 09:07:47'),('LAK','Lao kip',1,'2019-03-28 09:07:47'),('LBP','Lebanese pound',1,'2019-03-28 09:07:47'),('LKR','Sri Lanka rupee',1,'2019-03-28 09:07:47'),('LRD','Liberian dollar',1,'2019-03-28 09:07:47'),('LSL','Lesotho loti',1,'2019-03-28 09:07:47'),('LTL','Lithuanian litas',1,'2019-03-28 09:07:47'),('LVL','Latvian lats',1,'2019-03-28 09:07:47'),('LYD','Libyan dinar',1,'2019-03-28 09:07:47'),('MAD','Moroccan dirham',1,'2019-03-28 09:07:47'),('MDL','Moldovan leu',1,'2019-03-28 09:07:47'),('MGA','Malagasy ariary',1,'2019-03-28 09:07:47'),('MKD','Macedonian denar',1,'2019-03-28 09:07:47'),('MMK','Myanmar kyat',1,'2019-03-28 09:07:47'),('MNT','Mongolian tugrik',1,'2019-03-28 09:07:47'),('MOP','Macao SAR pataca',1,'2019-03-28 09:07:47'),('MRO','Mauritanian ouguiya',1,'2019-03-28 09:07:47'),('MUR','Mauritius rupee',1,'2019-03-28 09:07:47'),('MVR','Maldivian rufiyaa',1,'2019-03-28 09:07:47'),('MWK','Malawi kwacha',1,'2019-03-28 09:07:47'),('MXN','Mexican peso',1,'2019-03-28 09:07:47'),('MYR','Malaysian ringgit',1,'2019-03-28 09:07:47'),('MZN','Mozambique new metical',1,'2019-03-28 09:07:47'),('NAD','Namibian dollar',1,'2019-03-28 09:07:47'),('NGN','Nigerian naira',1,'2019-03-28 09:07:47'),('NIO','Nicaraguan cordoba oro',1,'2019-03-28 09:07:47'),('NOK','Norwegian krone',1,'2019-03-28 09:07:47'),('NPR','Nepalese rupee',1,'2019-03-28 09:07:47'),('NZD','New Zealand dollar',1,'2019-03-28 09:07:47'),('OMR','Omani rial',1,'2019-03-28 09:07:47'),('PAB','Panamanian balboa',1,'2019-03-28 09:07:47'),('PEN','Peruvian nuevo sol',1,'2019-03-28 09:07:47'),('PGK','Papua New Guinea kina',1,'2019-03-28 09:07:47'),('PHP','Philippine peso',1,'2019-03-28 09:07:47'),('PKR','Pakistani rupee',1,'2019-03-28 09:07:47'),('PLN','Polish zloty',1,'2019-03-28 09:07:47'),('PYG','Paraguayan guarani',1,'2019-03-28 09:07:47'),('QAR','Qatari rial',1,'2019-03-28 09:07:47'),('RON','Romanian new leu',1,'2019-03-28 09:07:47'),('RSD','Serbian dinar',1,'2019-03-28 09:07:47'),('RUB','Russian ruble',1,'2019-03-28 09:07:47'),('RWF','Rwandan franc',1,'2019-03-28 09:07:47'),('SAR','Saudi riyal',1,'2019-03-28 09:07:47'),('SBD','Solomon Islands dollar',1,'2019-03-28 09:07:47'),('SCR','Seychelles rupee',1,'2019-03-28 09:07:47'),('SDG','Sudanese pound',1,'2019-03-28 09:07:47'),('SEK','Swedish krona',1,'2019-03-28 09:07:47'),('SGD','Singapore dollar',1,'2019-03-28 09:07:47'),('SHP','Saint Helena pound',1,'2019-03-28 09:07:47'),('SLL','Sierra Leone leone',1,'2019-03-28 09:07:47'),('SOS','Somali shilling',1,'2019-03-28 09:07:47'),('SPL','Seborgan luigino',1,'2019-03-28 09:07:47'),('SRD','Suriname dollar',1,'2019-03-28 09:07:47'),('STD','Sao Tome and Principe dobra',1,'2019-03-28 09:07:47'),('SVC','El Salvador colon',1,'2019-03-28 09:07:47'),('SYP','Syrian pound',1,'2019-03-28 09:07:47'),('SZL','Swaziland lilangeni',1,'2019-03-28 09:07:47'),('THB','Thai baht',1,'2019-03-28 09:07:47'),('TJS','Tajik somoni',1,'2019-03-28 09:07:47'),('TMT','Turkmen new manat',1,'2019-03-28 09:07:47'),('TND','Tunisian dinar',1,'2019-03-28 09:07:47'),('TOP','Tongan pa\'anga',1,'2019-03-28 09:07:47'),('TRY','Turkish lira',1,'2019-03-28 09:07:47'),('TTD','Trinidad and Tobago dollar',1,'2019-03-28 09:07:47'),('TVD','Tuvaluan dollar',1,'2019-03-28 09:07:47'),('TWD','Taiwan New dollar',1,'2019-03-28 09:07:47'),('TZS','Tanzanian shilling',1,'2019-03-28 09:07:47'),('UAH','Ukrainian hryvnia',1,'2019-03-28 09:07:47'),('UGX','Uganda new shilling',1,'2019-03-28 09:07:47'),('USD','US dollar',1,'2019-03-28 09:07:47'),('UYU','Uruguayan peso uruguayo',1,'2019-03-28 09:07:47'),('UZS','Uzbekistani sum',1,'2019-03-28 09:07:47'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-28 09:07:47'),('VND','Vietnamese dong',1,'2019-03-28 09:07:47'),('VUV','Vanuatu vatu',1,'2019-03-28 09:07:47'),('WST','Samoan tala',1,'2019-03-28 09:07:47'),('XAF','CFA franc BEAC',1,'2019-03-28 09:07:47'),('XAG','Silver (ounce)',1,'2019-03-28 09:07:47'),('XAU','Gold (ounce)',1,'2019-03-28 09:07:47'),('XCD','East Caribbean dollar',1,'2019-03-28 09:07:47'),('XDR','IMF special drawing right',1,'2019-03-28 09:07:47'),('XFO','Gold franc',1,'2019-03-28 09:07:47'),('XFU','UIC franc',1,'2019-03-28 09:07:47'),('XOF','CFA franc BCEAO',1,'2019-03-28 09:07:47'),('XPD','Palladium (ounce)',1,'2019-03-28 09:07:47'),('XPF','CFP franc',1,'2019-03-28 09:07:47'),('XPT','Platinum (ounce)',1,'2019-03-28 09:07:47'),('YER','Yemeni rial',1,'2019-03-28 09:07:47'),('ZAR','South African rand',1,'2019-03-28 09:07:47'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-28 09:07:47'),('ZMW','Zambian kwacha',1,'2019-03-28 09:07:47'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-28 09:07:47'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-28 09:07:47'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-28 09:07:47'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `endpointType` (
LOCK TABLES `endpointType` WRITE;
/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
-INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `migration` (
`batch` int(11) DEFAULT NULL,
`migration_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
CREATE TABLE `migration` (
LOCK TABLES `migration` WRITE;
/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
-INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-28 11:07:46'),(2,'02_endpointType.js',1,'2019-03-28 11:07:46'),(3,'03_endpointType-indexes.js',1,'2019-03-28 11:07:46'),(4,'04_partyIdType.js',1,'2019-03-28 11:07:46'),(5,'05_partyIdType-indexes.js',1,'2019-03-28 11:07:46'),(6,'08_oracleEndpoint.js',1,'2019-03-28 11:07:47'),(7,'09_oracleEndpoint-indexes.js',1,'2019-03-28 11:07:47');
/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `oracleEndpoint` (
`oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partyIdTypeId` int(10) unsigned NOT NULL,
`endpointTypeId` int(10) unsigned NOT NULL,
- `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
`currencyId` varchar(255) DEFAULT NULL,
`value` varchar(512) NOT NULL,
`isDefault` tinyint(1) NOT NULL DEFAULT '0',
CREATE TABLE `oracleEndpoint` (
`createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` varchar(128) NOT NULL,
PRIMARY KEY (`oracleEndpointId`),
- KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
- CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
CREATE TABLE `partyIdType` (
LOCK TABLES `partyIdType` WRITE;
/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
-INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-28 09:07:47'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-28 09:07:47'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-28 09:07:47'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-28 09:07:47'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-28 09:07:47'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2019-03-18 17:52:06
+-- Dump completed on 2019-03-28 11:09:54
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-FROM mhart/alpine-node:10.15.1 as gitbook-builder
+FROM mhart/alpine-node:10.15.1
WORKDIR /opt/gitbook
COPY . /opt/gitbook
-RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake graphviz ttf-droid ttf-droid-nonlatin curl
-
-ENV PLANTUML_VERSION 1.2019.3
-ENV LANG en_US.UTF-8
-RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o plantuml.jar
+RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
RUN npm install
+#
+#RUN apk del build-dependencies
-RUN npm run gitbook:install
-
-FROM mhart/alpine-node:10.15.1 as gitbook-server
-
-WORKDIR /opt/gitbook
-COPY --from=gitbook-builder /opt/gitbook .
+EXPOSE 8989
-RUN apk add --no-cache -t build-dependencies git make gcc g++ python libtool autoconf automake
+RUN npm run gitbook:install
#RUN npm run gitbook:build
-EXPOSE 8989
-
CMD npm run gitbook:serveNoReload
# Table of contents
* [Mojaloop Overview](README.md)
+* [Deployment Guide](deployment-guide/README.md)
+ * [Current Version](deployment-guide/current-versions.md)
+ * [Local Setup Linux](deployment-guide/mojaloop-local-setup-linux.md)
+ * [Local Setup Mac](deployment-guide/mojaloop-local-setup-mac.md)
+ * [Local Setup Windows](deployment-guide/mojaloop-local-setup-windows.md)
+ * [Troubleshooting](deployment-guide/mojaloop-deployment-troubleshooting.md)
* [Contributors Guide](contributors-guide/README.md)
- * [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
- * [Current Version](contributors-guide/mojaloop-deployment/current-versions.md)
* [Standards](contributors-guide/standards/README.md)
* [Versioning](contributors-guide/standards/versioning.md)
* [Creating new Features](contributors-guide/standards/creating-new-features.md)
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
* [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
* [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
- * [DEL Participants](mojaloop-technical-overview/account-lookup-service/als-del-participants.md)
* [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
* [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [Helm](repositories/helm.md)
* [Project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
-* [Glossary of Terms](glossary.md)
* [Changelog](changelog.md)
Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.d
* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
-### Versions
-
-| Version | Info | Release Date |
-| --- | --- | --- |
-| 1.0 | Initial release | 2018-11-01 |
-| | | |
-
## ALS Oracle API
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
Notes:
- `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- `GET /participants` response body returns a list of Participants, containing `currency`.
- `POST /participants` request body includes the `currency` as part of each record.
-
-### Versions
-
-| Version | Info | Release Date |
-| --- | --- | --- |
-| 1.1 | `PUT /participants/{Type}/{ID}` returns a `HTTP 204 - No Content on success`. This was previously returned `HTTP 200 - Success` `POST /participants` now returns a list a `partyList` either containing a `PartyIdInfo` or `ErrorInformation`. This is alignment to the Mojaloop Specification. | 2019-03-28 |
-| 1.0 | Initial release | 2019-03-08 |
-| | | |
\ No newline at end of file
----
-showToc: false
----
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
swagger: '2.0'
info:
- version: '1.1'
+ version: '1.0'
title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
contact: {}
basePath: /
schemes: []
consumes:
-- application/json
+ - application/json
produces:
-- application/json
+ - application/json
paths:
/participants/{Type}/{ID}:
get:
description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Look up participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDGet
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
200:
description: OK
paths:
description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
summary: Return participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPut
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: accept
- in: header
- required: false
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
- 204:
- description: No Content
+ 200:
+ description: OK
headers: {}
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
paths:
description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
summary: Create participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
201:
description: Created
paths:
description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Delete participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDDelete
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
204:
description: No Content
paths:
description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
summary: Batch create participant information #fail these as a batch or accept it as a batch
tags:
- - participants
+ - participants
operationId: ParticipantsPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsPostRequest'
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
201:
description: Created
headers: {}
- schema:
- $ref: '#/definitions/ParticipantsIDPutResponse'
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
schema:
definitions:
example: AED
type: string
enum:
- - AED
- - AFN
- - ALL
- - AMD
- - ANG
- - AOA
- - ARS
- - AUD
- - AWG
- - AZN
- - BAM
- - BBD
- - BDT
- - BGN
- - BHD
- - BIF
- - BMD
- - BND
- - BOB
- - BRL
- - BSD
- - BTN
- - BWP
- - BYN
- - BZD
- - CAD
- - CDF
- - CHF
- - CLP
- - CNY
- - COP
- - CRC
- - CUC
- - CUP
- - CVE
- - CZK
- - DJF
- - DKK
- - DOP
- - DZD
- - EGP
- - ERN
- - ETB
- - EUR
- - FJD
- - FKP
- - GBP
- - GEL
- - GGP
- - GHS
- - GIP
- - GMD
- - GNF
- - GTQ
- - GYD
- - HKD
- - HNL
- - HRK
- - HTG
- - HUF
- - IDR
- - ILS
- - IMP
- - INR
- - IQD
- - IRR
- - ISK
- - JEP
- - JMD
- - JOD
- - JPY
- - KES
- - KGS
- - KHR
- - KMF
- - KPW
- - KRW
- - KWD
- - KYD
- - KZT
- - LAK
- - LBP
- - LKR
- - LRD
- - LSL
- - LYD
- - MAD
- - MDL
- - MGA
- - MKD
- - MMK
- - MNT
- - MOP
- - MRO
- - MUR
- - MVR
- - MWK
- - MXN
- - MYR
- - MZN
- - NAD
- - NGN
- - NIO
- - NOK
- - NPR
- - NZD
- - OMR
- - PAB
- - PEN
- - PGK
- - PHP
- - PKR
- - PLN
- - PYG
- - QAR
- - RON
- - RSD
- - RUB
- - RWF
- - SAR
- - SBD
- - SCR
- - SDG
- - SEK
- - SGD
- - SHP
- - SLL
- - SOS
- - SPL
- - SRD
- - STD
- - SVC
- - SYP
- - SZL
- - THB
- - TJS
- - TMT
- - TND
- - TOP
- - TRY
- - TTD
- - TVD
- - TWD
- - TZS
- - UAH
- - UGX
- - USD
- - UYU
- - UZS
- - VEF
- - VND
- - VUV
- - WST
- - XAF
- - XCD
- - XDR
- - XOF
- - XPF
- - YER
- - ZAR
- - ZMW
- - ZWD
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
PartyIdTypeEnum:
title: PartyIdTypeEnum
description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
example: MSISDN
type: string
enum:
- - MSISDN
- - EMAIL
- - PERSONAL_ID
- - BUSINESS
- - DEVICE
- - ACCOUNT_ID
- - IBAN
- - ALIAS
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
ErrorInformation:
title: ErrorInformation
description: Data model for the complex type ErrorInformation.
definitions:
extensionList:
$ref: '#/definitions/ExtensionList'
required:
- - errorCode
- - errorDescription
+ - errorCode
+ - errorDescription
ErrorInformationResponse:
title: ErrorInformationResponse
description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
definitions:
description: Extension value.
type: string
required:
- - key
- - value
+ - key
+ - value
ExtensionList:
title: ExtensionList
description: Data model for the complex type ExtensionList
definitions:
minItems: 1
maxItems: 16
required:
- - extension
+ - extension
ParticipantsTypeIDGetResponse:
title: ParticipantsTypeIDGetResponse
description: OK
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
ParticipantsPostRequest:
title: ParticipantsPostRequest
description: POST /participants object
definitions:
minItems: 1
maxItems: 10000
required:
- - requestId
- - partyList
+ - requestId
+ - partyList
PartyIdInfo:
title: PartyIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
type: string
required:
- - partyIdType
- - partyIdentifier
- ParticipantsIDPutResponse:
- title: ParticipantsIDPutResponse
- type: object
- description: PUT /participants/{ID} object
- properties:
- partyList:
- type: array
- items:
- $ref: '#/definitions/PartyResult'
- minItems: 1
- maxItems: 10000
- description: List of PartyResult elements that were either created or failed to be created.
- currency:
- type: string
- description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
- required:
- - partyList
- PartyResult:
- title: PartyResult
- type: object
- description: Data model for the complex type PartyResult.
- properties:
- partyId:
- $ref: '#/definitions/PartyIdInfo'
- errorInformation:
- $ref: '#/definitions/ErrorInformation'
- required:
- - partyId
+ - partyIdType
+ - partyIdentifier
PartyTypeIdInfo:
title: PartyTypeIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
tags:
-- name: participants
- description: ''
+ - name: participants
+ description: ''
----
-showToc: false
----
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
\ No newline at end of file
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
In general, we are looking for example implementations and bug fixes, and projec
Join the [Mojaloop Slack Discussions](https://mojaloop-slack.herokuapp.com/) to connect with other developers.
-Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
+Also checkout the [FAQ](https://github.com/mojaloop/documentation/blob/master/contributors-guide/frequently-asked-questions.md)
### What is the current release?
+# Mojaloop Deployment
+
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+## Deployment and Setup
+
+ * [Pre-requisites](#1-pre-requisites)
+ * [Deployment Recommendations](#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](#2-local-deployment-and-testing-tools)
+ * [MAC environment](#21-mac-environment)
+ * [LINUX environment](#21-linux-environment)
+ * [Kubernetes Dashboard](#3-kubernetes-dashboard)
+ * [Helm](#4-helm)
+ * [Helm configuration](#41-helm-configuration)
+ * [Postman](#5-postman)
+ * [Installing Postman](#51-installing-postman)
+ * [Setup Postman](#52-setup-postman)
+
+### 1 Pre-requisites
+
+*** TODO
+*** ADD list of pre-requisites and add link to:
+- [Kubernetes](https://kubernetes.io)
+- [Docker](https://docker.com)
+- [Postman](https://postman.com)
+- [Helm](https://helm.sh)
+
+For local guides on how to setup the pre-requisites refer to the following links:
+- [Local Setup for Linux](mojaloop-local-setup-linux.md)
+- [Local Setup for Mac](mojaloop-local-setup-mac.md)
+- [Local Setup for Windows](mojaloop-local-setup-windows.md)
+
+### 1.1 Deployment Recommendations
+
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+**Resources Requirements:**
+
+* Control Plane (i.e. Master Node)
+
+ [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+
+ * 3x Master Nodes for future node scaling and HA (High Availability)
+
+* ETCd Plane:
+
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+
+ * 3x ETCd nodes for HA (High Availability)
+
+* Compute Plane (i.e. Worker Node):
+
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+
+#### 2 Kubernetes Dashboard:
+
+1 Install Kubernetes Dashboard roles, services & deployment.
+
+ **Note** Linux only - If you have installed MicroK8s, you only need to enable the dashboard before starting the proxy.
+ ```bash
+ microk8s.enable dashboard
+ ```
+ Remember to prefix all **kubectl** commands with **microk8s** if you opted not to create an alias.
+
+2. Alternative (not required if you have already enabled the dashboard) install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard))
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+3. Verify Kubernetes Dashboard;
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+
+4. Start proxy for local UI in new terminal;
+ ```bash
+ kubectl proxy ui
+ ```
+
+5. Open URI in default browser
+ ```http request
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+
+ Select **Token**. Generate a token to use there by:
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+ The token to use is shown on the last line of the output of that command.
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+### 3 Helm
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+#### 3.1 Helm configuration
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster;
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running;
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+
+3. Add mojaloop repo to your Helm config (optional). Linux use with sudo;
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts. Linux use with sudo;;
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+5. Update helm repositories. Linux use with sudo;
+ ```bash
+ helm repo update
+ ```
+
+6. Install nginx-ingress for load balancing & external access. Linux use with sudo;
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+7. Update your /ect/hosts;
+ ```bash
+ vi /etc/hosts
+ ```
+
+ Include the following line to the config:
+
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+8. Test system health in your browser after installation. This will only work if you have an active helm chart deployment running.
+ ml-api-adapter health test
+ ```https request
+ http://test-ml-api-adapter.mojaloop.live/health
+ ```
+
+ central-ledger health test
+ ```http request
+ http://test-central-ledger.mojaloop.live/health
+ ```
+
+### 4 Postman
+
+Postman is used to send requests and receive responses.
+
+#### 4.1 Installing Postman
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+#### 4.2 Setup Postman
+
+1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+2. Open **Postman**
+3. Click **Import** and then **Import File**
+4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
+5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+6. Click **Import** and then **Import File**
+7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+8. In the imported collection, navigate to the _central_ledger_ directory
+# Deployment Troubleshooting
+
+## Deployment issues
+
+### 1.
+
+**** TODO
+**** Think about a template here:
+What is the issue?
+How was it produced (what were you doing, where were you doing it i.e. macos, linux, etc)?
+And how do I fix it?
+
+- central-ledger’s server IP address could not be found.
+
+ `ERR_NAME_NOT_RESOLVED`
+
+ Resolved by:
+
+ * Verify that a helm chart(s) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](README.md#221-helm-chart-installation) section to install a chart.
+# Mojaloop Setup for Ubuntu
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+## Setup Introduction
+This document will provide guidelines to a technical capable resources to setup, deploy and configure the Mojaloop applications on a local environment, utilizing Docker, Kubernetes and HELM charts.
+
+* [Environment Setup](mojaloop-local-setup-linux.md#1-environment-setup)
+ * [Docker](mojaloop-local-setup-linux.md#1-docker)
+ * [Kubernetes](mojaloop-local-setup-linux.md#2-kubernetes)
+ * [MicroK8S](mojaloop-local-setup-linux.md#21-microk8s)
+* [Errors During Setup](mojaloop-local-setup-linux.md#3-errors-on-setup)
+* [Useful Tips](mojaloop-local-setup-linux.md#4-useful-tips)
+
+The tool set to be deployed as part of the deployment process. The below table is just a point of reference.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Installation Reference(s)
+ Tutorial Reference(s)
+
+
+
+
+ Docker
+ Required
+ Docker Engine and CLI Client.Local Kubernetes single node cluster.
+ https://docs.docker.com/install
+ Getting started with Docker
+
+
+ Kubectl
+ Required
+ Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.
+ https://kubernetes.io/docs/tasks/tools/install-kubectlDocker Kubernetes Install (as per this guide)$ sudo snap install kubectl --classic
+ Kubernetes Tutorials/
+
+
+ MicroK8s
+ Required
+ Kubernetes for workstations and appliances.A single package of k8s that installs on Linux.
+ https://microk8s.io/docs/$ snap install microk8s --classic
+ The Kubernetes tutorial, the MicroK8s website contains a short video clip under the Working with MicroK8s section that is worth looking at.
+
+
+ Kubectx
+ Optional(useful tool)
+ Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.
+ https://github.com/ahmetb/kubectx$ sudo apt install kubectx
+ Please refer to the github repositary for more information.https://github.com/ahmetb/kubectx
+
+
+ Kubetail
+ Optional(useful tool)
+ Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running $ kubectl logs -f but for multiple pods.Example usage$ kubetail moja.* -n demo
+ https://github.com/johanhaleby/kubetail
+ Please refer to the github repositary for more information.https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+ Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application.
+ https://docs.helm.sh/using_helm/#installing-helm$ sudo snap install helm --classic
+ Helm Documents
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.
+ https://www.getpostman.com/apps
+ Postman Learning Centre
+
+
+
+
+## 1 Environment Setup
+This environment setup was validated on:
+ * 64-bit version of Ubuntu Bionic 18.04(LTS).
+ * This guide is based on Ubuntu 18.04.2 (bionic) on a x86_64 desktop with 8 CPU's and 16GB RAM.
+
+### 1 Docker
+Dockerd is deployed as part of the MicroK8s installation. The docker daemon used by MicroK8s is listening on unix:///var/snap/microk8s/current/docker.sock. You can access it with the **microk8s.docker** command.
+
+### 2 Kubernetes
+This section will guide the reader through the deployment process to setup Kubernetes.
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 2.1 MicroK8S
+The quickest way to get started is to install directly from the snap store.
+
+Don't have the snap command? [Install snapd first](https://snapcraft.io/docs/core/install).
+
+1. Installing MicroK8s from snap:
+ ```bash
+ snap install microk8s --classic
+ ```
+
+2. Verify MicroK8s is installed and available:
+ ```bash
+ microk8s.status
+ ```
+
+3. During installation you can use the --wait-ready flag to wait for the kubernetes services to initialise:
+ ```bash
+ microk8s.status --wait -ready
+ ```
+
+4. To avoid colliding with a **kubectl** already installed and to avoid overwriting any existing Kubernetes configuration file, MicroK8s adds a **microk8s.kubectl** command, configured to exclusively access the new **MicroK8s** install.
+ ```bash
+ microk8s.kubectl get services
+ ```
+
+5. This step is only necessary if you require **microk8s.kubectl** to function as a standard **kubectl** command. This **DOES NOT** mean that you can then use **kubectl** to access **OTHER** k8s clusters.
+ An example of why you would use this: You have a bash script or 3rd party tool that expects **kubectl** to be available. E.g. If you want to use Helm, it will not work against **microk8s.kubectl**, thus one **MUST** setup the alias for Helm to function correctly.
+ ```bash
+ snap alias microk8s.kubectl kubectl
+ ```
+
+ Reverting it at any time:
+ ```bash
+ snap unalias kubectl
+ ```
+
+ We will stick with the standard command of prefixing with **microk8s.** for this guide.
+
+6. If you already have **kubectl** installed and would like to use it to access the **MicroK8s** deployment:
+ ```bash
+ microk8s.kubectl config view --raw > $HOME/.kube/config
+ ```
+
+7. This step is only necessary if you require **microk8s.docker** to function as a standard **docker** command. ;
+ ```bash
+ sudo snap alias microk8s.docker docker
+ ```
+
+ Undo the alias;
+ ```bash
+ sudo snap unalias docker
+ ```
+
+8. We will apply the native microK8s commands by prefix commands **microk8s.**:
+ ```bash
+ microk8s.docker ps
+ ```
+
+9. View the current context:
+ ```bash
+ microk8s.kubectl config get-contexts
+ ```
+
+10. Make sure the current context is **microk8s**. If not, set it as the current context:
+ ```bash
+ microk8s.kubectl config use-context microk8s
+ ```
+
+### 3 Errors On Setup
+Errors encountered and the solutions to be documented within this section.
+
+### 4 Useful Tips
+1. Resolve problems with VSCode and kafka on ubuntu 18.04. To make the code work with VSCode debugger, added the following into the launch.json
+ ```json
+ "env": {
+ "LD_LIBRARY_PATH": "${workspaceFolder}/node_modules/node-rdkafka/build/deps",
+ "WITH_SASL": 0
+ }
+ ```
+
+### 5 Deployment
+
+**** TODO
+**** ADD NOTE kubectl command alias or use the microk8s.kubectl command instead
+**** ADD NOTE docker command alias or use the microk8s.docker command instead
+
+Refer to [Mojaloop's deployment guide](./README.md).
+# Mojaloop local environment setup for Mac
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+Before proceeding, please insure you have reviewed [Mojaloop's deployment guide](./README.md).
+
+## Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+* [Local Deployment](mojaloop-local-setup-mac.md#local-deployment)
+ * [Kubernetes](mojaloop-local-setup-mac.md#1-kubernetes)
+ * [Kubernetes Installation with Docker](mojaloop-local-setup-mac.md#11-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](mojaloop-local-setup-mac.md#12-kubernetes-environment-setup)
+
+## Local Deployment
+
+The tool set to be deployed as part of the deployment process.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Installation Reference(s)
+ Tutorial Reference(s)
+
+
+
+
+ Docker
+ Required
+ Docker Engine and CLI Client.Local Kubernetes single node cluster.
+ https://docs.docker.com/install
+ https://docs.docker.com/get-started/
+
+
+ Kubectl
+ Required
+ Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.
+ https://kubernetes.io/docs/tasks/tools/install-kubectlDocker Kubernetes Install (as per this guide)$ brew install kubernetes-cli
+ https://kubernetes.io/docs/tutorials/
+
+
+ Kubectx
+ Optional(useful tool)
+ Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.
+ https://github.com/ahmetb/kubectx$ brew install kubectx
+ Please refer to the github repositary for more information.https://github.com/ahmetb/kubectx
+
+
+ Kubetail
+ Optional(useful tool)
+ Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running $ kubectl logs -f but for multiple pods.Example usage$ kubetail moja.* -n demo
+ https://github.com/johanhaleby/kubetail
+ Please refer to the github repositary for more information.https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+ Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application.
+ https://docs.helm.sh/using_helm/#installing-helm$ brew install kubernetes-helm
+ https://helm.sh/docs/
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.
+ https://www.getpostman.com/apps
+ Postman Learning Centre
+
+
+
+
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+### 1 Kubernetes
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 1.1 Kubernetes Installation with Docker
+
+* **kubectl** Complete set of installation instruction are available [here](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
+
+ ```bash
+ brew install kubernetes-cli
+ ```
+ To verify if the installation was successful, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+To install Kubernetes with Docker, follow the steps below;
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
+
+
+
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
+
+
+
+#### 1.2 Kubernetes environment setup:
+
+1. List the current Kubernetes context;
+ ```bash
+ kubectl config get-contexts
+ ```
+
+ **or**
+ ```bash
+ kubectx
+ ```
+2. Change your Contexts;
+ ```bash
+ kubectl config use-context docker-for-desktop
+ ```
+
+ **or**
+ ```bash
+ kubectx docker-for-desktop
+ ```
+# Mojaloop local environment setup for Windows
+
+Coming soon - Contributions welcome.
Use-cases that have been implemented over and above for Hub Operational use:
### 1.1 Account Lookup Service (ALS)
The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
-#### 1.1.1 Assumptions
-
-* The ALS design will only cater for a single switch for the time being.
-* Support for multiple switches will utilise the same DNS resolution mechanism that is being developed for the Cross Border/Network design.
-
-#### 1.1.2 Routing
-
The routing configuration will be based on the following:
* PartyIdType - See section `7.5.6` of the Mojaloop Specification
-* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, however `isDefault` indicator must be set to `true` if the `Currency` is not provided.
-* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
-
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
### 1.2 ALS Oracle
The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
# GET Participants
-Design for the retrieval of a Participant by a DFSP.
-
## Sequence Diagram
-{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participants-7.1.0.plantuml" %}
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
{% enduml %}
# GET Parties
-Design for the retrieval of a Party by a DFSP.
-
## Sequence Diagram
-{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" %}
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
{% enduml %}
# Sequence Diagram for POST Participants
-Design for the creation of a Participant by a DFSP.
-
## Notes
- Operation only supports requests which contain:
- All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
- All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-- Duplicate POST Requests with matching TYPE and optional CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
## Sequence Diagram
-{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.1.1.plantuml" %}
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
{% enduml %}
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A10. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A9. User Lookup GET /parties/<idType>/<id>A9. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A11. User Lookup PUT /parties/<idType>/<id>A11. User Lookup <br>PUT /parties/<idType>/<id>A14. User Lookup PUT /parties/<idType>/<id>A14. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA8. Retrieve Participant End-point DataA8. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A12. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA6. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A13. Retrieve Participant End-point Data<font style="font-size: 13px">A13. Retrieve Participant End-point Data</font>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
@startuml
' declare title
-title 7.2.0. Get Party Details
+title 7.1.0. Get Party Details
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistence Store
+' database - Database Persistance Store
' declare actors
actor "Payer FSP" as PAYER_FSP
group Get Party Details
'********************* Retrieve Oracle Routing Information - END ************************
|||
'********************* Retrieve Switch Routing Information - START ************************
-' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
-' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
-' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
-' |||
-' end ref
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
'********************* Retrieve Switch Routing Information - END ************************
|||
group Validate FSPIOP-Source Participant
group Get Party Details
'********************* Request Parties Information - END ************************
- '********************* Get PayerFSP Participant End-point Information - START ************************
+ '********************* Get PayerFSP Participant Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
- '********************* Get PayerFSP Participant End-point Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
- '********************* Get PayerFSP Participant End-point Information - START ************************
+ '********************* Get PayerFSP Participant Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant End-point Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- '********************* Get PayeeFSP Participant End-point Information - START ************************
+ '********************* Get PayeeFSP Participant Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant End-point Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.2.1. Post Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+' hnote over ALS_API #lightyellow
+' "POST /participant" operation only supports requests which contain:
+' - All Participant's FSPs match the FSPIOP-Source
+' - All Participant's TYPEs are the same
+' - All Participant's will be of the same Currency
+' end note
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ loop for keys in ParticipantMap -> TYPE
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+ '********************* Fetch Oracle Routing Information - END ************************
+
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ |||
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant
+ loop for Participant in ParticipantLis
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same\nError code: 3100
+
+ end loop
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of Endpoints
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Empty list of End-Points returned or Error occurred
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+ deactivate ALS_API
+
+ deactivate ALS_PARTICIPANT_HANDLER
+ end loop
+end
+@enduml
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+--
+-- Table structure for table `centralSwitchEndpoint`
+--
+
+DROP TABLE IF EXISTS `centralSwitchEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `centralSwitchEndpoint` (
+ `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`centralSwitchEndpointId`),
+ KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `centralSwitchEndpoint`
+--
+
+LOCK TABLES `centralSwitchEndpoint` WRITE;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
--
-- Table structure for table `currency`
--
CREATE TABLE `currency` (
LOCK TABLES `currency` WRITE;
/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
-INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-28 09:07:47'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-28 09:07:47'),('AFN','Afghanistan afghani',1,'2019-03-28 09:07:47'),('ALL','Albanian lek',1,'2019-03-28 09:07:47'),('AMD','Armenian dram',1,'2019-03-28 09:07:47'),('ANG','Netherlands Antillian guilder',1,'2019-03-28 09:07:47'),('AOA','Angolan kwanza',1,'2019-03-28 09:07:47'),('AOR','Angolan kwanza reajustado',1,'2019-03-28 09:07:47'),('ARS','Argentine peso',1,'2019-03-28 09:07:47'),('AUD','Australian dollar',1,'2019-03-28 09:07:47'),('AWG','Aruban guilder',1,'2019-03-28 09:07:47'),('AZN','Azerbaijanian new manat',1,'2019-03-28 09:07:47'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-28 09:07:47'),('BBD','Barbados dollar',1,'2019-03-28 09:07:47'),('BDT','Bangladeshi taka',1,'2019-03-28 09:07:47'),('BGN','Bulgarian lev',1,'2019-03-28 09:07:47'),('BHD','Bahraini dinar',1,'2019-03-28 09:07:47'),('BIF','Burundi franc',1,'2019-03-28 09:07:47'),('BMD','Bermudian dollar',1,'2019-03-28 09:07:47'),('BND','Brunei dollar',1,'2019-03-28 09:07:47'),('BOB','Bolivian boliviano',1,'2019-03-28 09:07:47'),('BRL','Brazilian real',1,'2019-03-28 09:07:47'),('BSD','Bahamian dollar',1,'2019-03-28 09:07:47'),('BTN','Bhutan ngultrum',1,'2019-03-28 09:07:47'),('BWP','Botswana pula',1,'2019-03-28 09:07:47'),('BYN','Belarusian ruble',1,'2019-03-28 09:07:47'),('BZD','Belize dollar',1,'2019-03-28 09:07:47'),('CAD','Canadian dollar',1,'2019-03-28 09:07:47'),('CDF','Congolese franc',1,'2019-03-28 09:07:47'),('CHF','Swiss franc',1,'2019-03-28 09:07:47'),('CLP','Chilean peso',1,'2019-03-28 09:07:47'),('CNY','Chinese yuan renminbi',1,'2019-03-28 09:07:47'),('COP','Colombian peso',1,'2019-03-28 09:07:47'),('CRC','Costa Rican colon',1,'2019-03-28 09:07:47'),('CUC','Cuban convertible peso',1,'2019-03-28 09:07:47'),('CUP','Cuban peso',1,'2019-03-28 09:07:47'),('CVE','Cape Verde escudo',1,'2019-03-28 09:07:47'),('CZK','Czech koruna',1,'2019-03-28 09:07:47'),('DJF','Djibouti franc',1,'2019-03-28 09:07:47'),('DKK','Danish krone',1,'2019-03-28 09:07:47'),('DOP','Dominican peso',1,'2019-03-28 09:07:47'),('DZD','Algerian dinar',1,'2019-03-28 09:07:47'),('EEK','Estonian kroon',1,'2019-03-28 09:07:47'),('EGP','Egyptian pound',1,'2019-03-28 09:07:47'),('ERN','Eritrean nakfa',1,'2019-03-28 09:07:47'),('ETB','Ethiopian birr',1,'2019-03-28 09:07:47'),('EUR','EU euro',1,'2019-03-28 09:07:47'),('FJD','Fiji dollar',1,'2019-03-28 09:07:47'),('FKP','Falkland Islands pound',1,'2019-03-28 09:07:47'),('GBP','British pound',1,'2019-03-28 09:07:47'),('GEL','Georgian lari',1,'2019-03-28 09:07:47'),('GGP','Guernsey pound',1,'2019-03-28 09:07:47'),('GHS','Ghanaian new cedi',1,'2019-03-28 09:07:47'),('GIP','Gibraltar pound',1,'2019-03-28 09:07:47'),('GMD','Gambian dalasi',1,'2019-03-28 09:07:47'),('GNF','Guinean franc',1,'2019-03-28 09:07:47'),('GTQ','Guatemalan quetzal',1,'2019-03-28 09:07:47'),('GYD','Guyana dollar',1,'2019-03-28 09:07:47'),('HKD','Hong Kong SAR dollar',1,'2019-03-28 09:07:47'),('HNL','Honduran lempira',1,'2019-03-28 09:07:47'),('HRK','Croatian kuna',1,'2019-03-28 09:07:47'),('HTG','Haitian gourde',1,'2019-03-28 09:07:47'),('HUF','Hungarian forint',1,'2019-03-28 09:07:47'),('IDR','Indonesian rupiah',1,'2019-03-28 09:07:47'),('ILS','Israeli new shekel',1,'2019-03-28 09:07:47'),('IMP','Isle of Man pound',1,'2019-03-28 09:07:47'),('INR','Indian rupee',1,'2019-03-28 09:07:47'),('IQD','Iraqi dinar',1,'2019-03-28 09:07:47'),('IRR','Iranian rial',1,'2019-03-28 09:07:47'),('ISK','Icelandic krona',1,'2019-03-28 09:07:47'),('JEP','Jersey pound',1,'2019-03-28 09:07:47'),('JMD','Jamaican dollar',1,'2019-03-28 09:07:47'),('JOD','Jordanian dinar',1,'2019-03-28 09:07:47'),('JPY','Japanese yen',1,'2019-03-28 09:07:47'),('KES','Kenyan shilling',1,'2019-03-28 09:07:47'),('KGS','Kyrgyz som',1,'2019-03-28 09:07:47'),('KHR','Cambodian riel',1,'2019-03-28 09:07:47'),('KMF','Comoros franc',1,'2019-03-28 09:07:47'),('KPW','North Korean won',1,'2019-03-28 09:07:47'),('KRW','South Korean won',1,'2019-03-28 09:07:47'),('KWD','Kuwaiti dinar',1,'2019-03-28 09:07:47'),('KYD','Cayman Islands dollar',1,'2019-03-28 09:07:47'),('KZT','Kazakh tenge',1,'2019-03-28 09:07:47'),('LAK','Lao kip',1,'2019-03-28 09:07:47'),('LBP','Lebanese pound',1,'2019-03-28 09:07:47'),('LKR','Sri Lanka rupee',1,'2019-03-28 09:07:47'),('LRD','Liberian dollar',1,'2019-03-28 09:07:47'),('LSL','Lesotho loti',1,'2019-03-28 09:07:47'),('LTL','Lithuanian litas',1,'2019-03-28 09:07:47'),('LVL','Latvian lats',1,'2019-03-28 09:07:47'),('LYD','Libyan dinar',1,'2019-03-28 09:07:47'),('MAD','Moroccan dirham',1,'2019-03-28 09:07:47'),('MDL','Moldovan leu',1,'2019-03-28 09:07:47'),('MGA','Malagasy ariary',1,'2019-03-28 09:07:47'),('MKD','Macedonian denar',1,'2019-03-28 09:07:47'),('MMK','Myanmar kyat',1,'2019-03-28 09:07:47'),('MNT','Mongolian tugrik',1,'2019-03-28 09:07:47'),('MOP','Macao SAR pataca',1,'2019-03-28 09:07:47'),('MRO','Mauritanian ouguiya',1,'2019-03-28 09:07:47'),('MUR','Mauritius rupee',1,'2019-03-28 09:07:47'),('MVR','Maldivian rufiyaa',1,'2019-03-28 09:07:47'),('MWK','Malawi kwacha',1,'2019-03-28 09:07:47'),('MXN','Mexican peso',1,'2019-03-28 09:07:47'),('MYR','Malaysian ringgit',1,'2019-03-28 09:07:47'),('MZN','Mozambique new metical',1,'2019-03-28 09:07:47'),('NAD','Namibian dollar',1,'2019-03-28 09:07:47'),('NGN','Nigerian naira',1,'2019-03-28 09:07:47'),('NIO','Nicaraguan cordoba oro',1,'2019-03-28 09:07:47'),('NOK','Norwegian krone',1,'2019-03-28 09:07:47'),('NPR','Nepalese rupee',1,'2019-03-28 09:07:47'),('NZD','New Zealand dollar',1,'2019-03-28 09:07:47'),('OMR','Omani rial',1,'2019-03-28 09:07:47'),('PAB','Panamanian balboa',1,'2019-03-28 09:07:47'),('PEN','Peruvian nuevo sol',1,'2019-03-28 09:07:47'),('PGK','Papua New Guinea kina',1,'2019-03-28 09:07:47'),('PHP','Philippine peso',1,'2019-03-28 09:07:47'),('PKR','Pakistani rupee',1,'2019-03-28 09:07:47'),('PLN','Polish zloty',1,'2019-03-28 09:07:47'),('PYG','Paraguayan guarani',1,'2019-03-28 09:07:47'),('QAR','Qatari rial',1,'2019-03-28 09:07:47'),('RON','Romanian new leu',1,'2019-03-28 09:07:47'),('RSD','Serbian dinar',1,'2019-03-28 09:07:47'),('RUB','Russian ruble',1,'2019-03-28 09:07:47'),('RWF','Rwandan franc',1,'2019-03-28 09:07:47'),('SAR','Saudi riyal',1,'2019-03-28 09:07:47'),('SBD','Solomon Islands dollar',1,'2019-03-28 09:07:47'),('SCR','Seychelles rupee',1,'2019-03-28 09:07:47'),('SDG','Sudanese pound',1,'2019-03-28 09:07:47'),('SEK','Swedish krona',1,'2019-03-28 09:07:47'),('SGD','Singapore dollar',1,'2019-03-28 09:07:47'),('SHP','Saint Helena pound',1,'2019-03-28 09:07:47'),('SLL','Sierra Leone leone',1,'2019-03-28 09:07:47'),('SOS','Somali shilling',1,'2019-03-28 09:07:47'),('SPL','Seborgan luigino',1,'2019-03-28 09:07:47'),('SRD','Suriname dollar',1,'2019-03-28 09:07:47'),('STD','Sao Tome and Principe dobra',1,'2019-03-28 09:07:47'),('SVC','El Salvador colon',1,'2019-03-28 09:07:47'),('SYP','Syrian pound',1,'2019-03-28 09:07:47'),('SZL','Swaziland lilangeni',1,'2019-03-28 09:07:47'),('THB','Thai baht',1,'2019-03-28 09:07:47'),('TJS','Tajik somoni',1,'2019-03-28 09:07:47'),('TMT','Turkmen new manat',1,'2019-03-28 09:07:47'),('TND','Tunisian dinar',1,'2019-03-28 09:07:47'),('TOP','Tongan pa\'anga',1,'2019-03-28 09:07:47'),('TRY','Turkish lira',1,'2019-03-28 09:07:47'),('TTD','Trinidad and Tobago dollar',1,'2019-03-28 09:07:47'),('TVD','Tuvaluan dollar',1,'2019-03-28 09:07:47'),('TWD','Taiwan New dollar',1,'2019-03-28 09:07:47'),('TZS','Tanzanian shilling',1,'2019-03-28 09:07:47'),('UAH','Ukrainian hryvnia',1,'2019-03-28 09:07:47'),('UGX','Uganda new shilling',1,'2019-03-28 09:07:47'),('USD','US dollar',1,'2019-03-28 09:07:47'),('UYU','Uruguayan peso uruguayo',1,'2019-03-28 09:07:47'),('UZS','Uzbekistani sum',1,'2019-03-28 09:07:47'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-28 09:07:47'),('VND','Vietnamese dong',1,'2019-03-28 09:07:47'),('VUV','Vanuatu vatu',1,'2019-03-28 09:07:47'),('WST','Samoan tala',1,'2019-03-28 09:07:47'),('XAF','CFA franc BEAC',1,'2019-03-28 09:07:47'),('XAG','Silver (ounce)',1,'2019-03-28 09:07:47'),('XAU','Gold (ounce)',1,'2019-03-28 09:07:47'),('XCD','East Caribbean dollar',1,'2019-03-28 09:07:47'),('XDR','IMF special drawing right',1,'2019-03-28 09:07:47'),('XFO','Gold franc',1,'2019-03-28 09:07:47'),('XFU','UIC franc',1,'2019-03-28 09:07:47'),('XOF','CFA franc BCEAO',1,'2019-03-28 09:07:47'),('XPD','Palladium (ounce)',1,'2019-03-28 09:07:47'),('XPF','CFP franc',1,'2019-03-28 09:07:47'),('XPT','Platinum (ounce)',1,'2019-03-28 09:07:47'),('YER','Yemeni rial',1,'2019-03-28 09:07:47'),('ZAR','South African rand',1,'2019-03-28 09:07:47'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-28 09:07:47'),('ZMW','Zambian kwacha',1,'2019-03-28 09:07:47'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-28 09:07:47'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-28 09:07:47'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-28 09:07:47'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-28 09:07:47');
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `endpointType` (
LOCK TABLES `endpointType` WRITE;
/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
-INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-28 09:07:47');
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `migration` (
`batch` int(11) DEFAULT NULL,
`migration_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
CREATE TABLE `migration` (
LOCK TABLES `migration` WRITE;
/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
-INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-28 11:07:46'),(2,'02_endpointType.js',1,'2019-03-28 11:07:46'),(3,'03_endpointType-indexes.js',1,'2019-03-28 11:07:46'),(4,'04_partyIdType.js',1,'2019-03-28 11:07:46'),(5,'05_partyIdType-indexes.js',1,'2019-03-28 11:07:46'),(6,'08_oracleEndpoint.js',1,'2019-03-28 11:07:47'),(7,'09_oracleEndpoint-indexes.js',1,'2019-03-28 11:07:47');
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `oracleEndpoint` (
`oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partyIdTypeId` int(10) unsigned NOT NULL,
`endpointTypeId` int(10) unsigned NOT NULL,
+ `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
`currencyId` varchar(255) DEFAULT NULL,
`value` varchar(512) NOT NULL,
`isDefault` tinyint(1) NOT NULL DEFAULT '0',
CREATE TABLE `oracleEndpoint` (
`createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` varchar(128) NOT NULL,
PRIMARY KEY (`oracleEndpointId`),
+ KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
CREATE TABLE `partyIdType` (
LOCK TABLES `partyIdType` WRITE;
/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
-INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-28 09:07:47'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-28 09:07:47'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-28 09:07:47'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-28 09:07:47'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-28 09:07:47'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-28 09:07:47');
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2019-03-28 11:09:54
+-- Dump completed on 2019-03-18 17:52:06
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-FROM mhart/alpine-node:10.15.1
+FROM mhart/alpine-node:10.15.1 as gitbook-builder
WORKDIR /opt/gitbook
COPY . /opt/gitbook
-RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
+RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake graphviz ttf-droid ttf-droid-nonlatin curl
-RUN npm install
-#
-#RUN apk del build-dependencies
+ENV PLANTUML_VERSION 1.2019.3
+ENV LANG en_US.UTF-8
+RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o plantuml.jar
-EXPOSE 8989
+RUN npm install
RUN npm run gitbook:install
+FROM mhart/alpine-node:10.15.1 as gitbook-server
+
+WORKDIR /opt/gitbook
+COPY --from=gitbook-builder /opt/gitbook .
+
+RUN apk add --no-cache -t build-dependencies git make gcc g++ python libtool autoconf automake
+
#RUN npm run gitbook:build
+EXPOSE 8989
+
CMD npm run gitbook:serveNoReload
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
* [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
* [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
+ * [DEL Participants](mojaloop-technical-overview/account-lookup-service/als-del-participants.md)
* [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
* [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [Helm](repositories/helm.md)
* [Project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
+* [Glossary of Terms](glossary.md)
* [Changelog](changelog.md)
Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.d
* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
+### Versions
+
+| Version | Info | Release Date |
+| --- | --- | --- |
+| 1.0 | Initial release | 2018-11-01 |
+| | | |
+
## ALS Oracle API
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
Notes:
- `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- `GET /participants` response body returns a list of Participants, containing `currency`.
- `POST /participants` request body includes the `currency` as part of each record.
+
+### Versions
+
+| Version | Info | Release Date |
+| --- | --- | --- |
+| 1.1 | `PUT /participants/{Type}/{ID}` returns a `HTTP 204 - No Content on success`. This was previously returned `HTTP 200 - Success` `POST /participants` now returns a list a `partyList` either containing a `PartyIdInfo` or `ErrorInformation`. This is alignment to the Mojaloop Specification. | 2019-03-28 |
+| 1.0 | Initial release | 2019-03-08 |
+| | | |
\ No newline at end of file
+---
+showToc: false
+---
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
swagger: '2.0'
info:
- version: '1.0'
+ version: '1.1'
title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
contact: {}
basePath: /
schemes: []
consumes:
- - application/json
+- application/json
produces:
- - application/json
+- application/json
paths:
/participants/{Type}/{ID}:
get:
description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Look up participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDGet
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
200:
description: OK
paths:
description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
summary: Return participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPut
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: accept
- in: header
- required: false
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
- 200:
- description: OK
+ 204:
+ description: No Content
headers: {}
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
paths:
description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
summary: Create participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
201:
description: Created
paths:
description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Delete participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDDelete
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
204:
description: No Content
paths:
description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
summary: Batch create participant information #fail these as a batch or accept it as a batch
tags:
- - participants
+ - participants
operationId: ParticipantsPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsPostRequest'
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
201:
description: Created
headers: {}
+ schema:
+ $ref: '#/definitions/ParticipantsIDPutResponse'
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
schema:
definitions:
example: AED
type: string
enum:
- - AED
- - AFN
- - ALL
- - AMD
- - ANG
- - AOA
- - ARS
- - AUD
- - AWG
- - AZN
- - BAM
- - BBD
- - BDT
- - BGN
- - BHD
- - BIF
- - BMD
- - BND
- - BOB
- - BRL
- - BSD
- - BTN
- - BWP
- - BYN
- - BZD
- - CAD
- - CDF
- - CHF
- - CLP
- - CNY
- - COP
- - CRC
- - CUC
- - CUP
- - CVE
- - CZK
- - DJF
- - DKK
- - DOP
- - DZD
- - EGP
- - ERN
- - ETB
- - EUR
- - FJD
- - FKP
- - GBP
- - GEL
- - GGP
- - GHS
- - GIP
- - GMD
- - GNF
- - GTQ
- - GYD
- - HKD
- - HNL
- - HRK
- - HTG
- - HUF
- - IDR
- - ILS
- - IMP
- - INR
- - IQD
- - IRR
- - ISK
- - JEP
- - JMD
- - JOD
- - JPY
- - KES
- - KGS
- - KHR
- - KMF
- - KPW
- - KRW
- - KWD
- - KYD
- - KZT
- - LAK
- - LBP
- - LKR
- - LRD
- - LSL
- - LYD
- - MAD
- - MDL
- - MGA
- - MKD
- - MMK
- - MNT
- - MOP
- - MRO
- - MUR
- - MVR
- - MWK
- - MXN
- - MYR
- - MZN
- - NAD
- - NGN
- - NIO
- - NOK
- - NPR
- - NZD
- - OMR
- - PAB
- - PEN
- - PGK
- - PHP
- - PKR
- - PLN
- - PYG
- - QAR
- - RON
- - RSD
- - RUB
- - RWF
- - SAR
- - SBD
- - SCR
- - SDG
- - SEK
- - SGD
- - SHP
- - SLL
- - SOS
- - SPL
- - SRD
- - STD
- - SVC
- - SYP
- - SZL
- - THB
- - TJS
- - TMT
- - TND
- - TOP
- - TRY
- - TTD
- - TVD
- - TWD
- - TZS
- - UAH
- - UGX
- - USD
- - UYU
- - UZS
- - VEF
- - VND
- - VUV
- - WST
- - XAF
- - XCD
- - XDR
- - XOF
- - XPF
- - YER
- - ZAR
- - ZMW
- - ZWD
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
PartyIdTypeEnum:
title: PartyIdTypeEnum
description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
example: MSISDN
type: string
enum:
- - MSISDN
- - EMAIL
- - PERSONAL_ID
- - BUSINESS
- - DEVICE
- - ACCOUNT_ID
- - IBAN
- - ALIAS
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
ErrorInformation:
title: ErrorInformation
description: Data model for the complex type ErrorInformation.
definitions:
extensionList:
$ref: '#/definitions/ExtensionList'
required:
- - errorCode
- - errorDescription
+ - errorCode
+ - errorDescription
ErrorInformationResponse:
title: ErrorInformationResponse
description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
definitions:
description: Extension value.
type: string
required:
- - key
- - value
+ - key
+ - value
ExtensionList:
title: ExtensionList
description: Data model for the complex type ExtensionList
definitions:
minItems: 1
maxItems: 16
required:
- - extension
+ - extension
ParticipantsTypeIDGetResponse:
title: ParticipantsTypeIDGetResponse
description: OK
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
ParticipantsPostRequest:
title: ParticipantsPostRequest
description: POST /participants object
definitions:
minItems: 1
maxItems: 10000
required:
- - requestId
- - partyList
+ - requestId
+ - partyList
PartyIdInfo:
title: PartyIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
type: string
required:
- - partyIdType
- - partyIdentifier
+ - partyIdType
+ - partyIdentifier
+ ParticipantsIDPutResponse:
+ title: ParticipantsIDPutResponse
+ type: object
+ description: PUT /participants/{ID} object
+ properties:
+ partyList:
+ type: array
+ items:
+ $ref: '#/definitions/PartyResult'
+ minItems: 1
+ maxItems: 10000
+ description: List of PartyResult elements that were either created or failed to be created.
+ currency:
+ type: string
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ required:
+ - partyList
+ PartyResult:
+ title: PartyResult
+ type: object
+ description: Data model for the complex type PartyResult.
+ properties:
+ partyId:
+ $ref: '#/definitions/PartyIdInfo'
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ required:
+ - partyId
PartyTypeIdInfo:
title: PartyTypeIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
tags:
- - name: participants
- description: ''
+- name: participants
+ description: ''
+---
+showToc: false
+---
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
\ No newline at end of file
/assets/images/uml/.gitkeep b/assets/images/uml/.gitkeep
new file mode 100644
index 0000000..e69de29
In general, we are looking for example implementations and bug fixes, and projec
Join the [Mojaloop Slack Discussions](https://mojaloop-slack.herokuapp.com/) to connect with other developers.
-Also checkout the [FAQ](https://github.com/mojaloop/documentation/blob/master/contributors-guide/frequently-asked-questions.md)
+Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
### What is the current release?
At of March 6th 2019, the active releases for core central services are as below
* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
+
+| Version | 4.0.0 | 5.3.0 | 5.4.0 | 5.0 |
+| --- | :---: | :---: | :---: | :---: |
+| Released | x | x | x | x |
+| QA Framework | x |
\ No newline at end of file
+# Glossary of Terms
+
+| Term | Definition | Notes |
+| --- | --- | --- |
+| DFSP | Digital Financial Service Provider | |
+| FSP | Financial Service Provider | |
+| K8s | Short name for [Kubernetes](https://kubernetes.io/) | Read more here [https://kubernetes.io](https://kubernetes.io) |
+| ALS | [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md) | Refer to [Documentation](mojaloop-technical-overview/account-lookup-service/README.md) |
+| | | |
Use-cases that have been implemented over and above for Hub Operational use:
### 1.1 Account Lookup Service (ALS)
The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+#### 1.1.1 Assumptions
+
+* The ALS design will only cater for a single switch for the time being.
+* Support for multiple switches will utilise the same DNS resolution mechanism that is being developed for the Cross Border/Network design.
+
+#### 1.1.2 Routing
+
The routing configuration will be based on the following:
* PartyIdType - See section `7.5.6` of the Mojaloop Specification
-* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
-* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, however `isDefault` indicator must be set to `true` if the `Currency` is not provided.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+
### 1.2 ALS Oracle
The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+# DEL Participants
+
+Design for the deletion of a Participant by a DFSP.
+
+## Notes
+- Reference section 6.2.2.4 - Note: The ALS should verify that it is the Party’s current FSP that is deleting the FSP information. ~ This has been addressed in the design by insuring that the Party currently belongs to the FSPs requesting the deletion of the record. Any other validations are out of scope for the Switch and should be addressed at the schema level.
+
+## Sequence Diagram
+
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-del-participants-7.1.2.plantuml" %}
+{% enduml %}
# GET Participants
+Design for the retrieval of a Participant by a DFSP.
+
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participants-7.1.0.plantuml" %}
{% enduml %}
# GET Parties
+Design for the retrieval of a Party by a DFSP.
+
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" %}
{% enduml %}
# Sequence Diagram for POST Participants
+Design for the creation of a Participant by a DFSP.
+
## Notes
- Operation only supports requests which contain:
- All Participant's FSPs match the FSPIOP-Source
- - All Participant's TYPEs are the same
- All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+- Duplicate POST Requests with matching TYPE and optional CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
+{% uml src="mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.1.1.plantuml" %}
{% enduml %}
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A10. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A9. User Lookup GET /parties/<idType>/<id>A9. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A11. User Lookup PUT /parties/<idType>/<id>A11. User Lookup <br>PUT /parties/<idType>/<id>A14. User Lookup PUT /parties/<idType>/<id>A14. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA8. Retrieve Participant End-point DataA8. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A12. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA6. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A13. Retrieve Participant End-point Data<font style="font-size: 13px">A13. Retrieve Participant End-point Data</font>
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.2. Delete Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistence Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+actor "Payee FSP" as PAYEE_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+'entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Parties\nFSP DAO" as ALS_PARTIES_FSP_DAO
+entity "ALS Participant Endpoint\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+participant ALS_PARTIES_FSP_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Financial Service Provider" #LightGrey
+participant PAYEE_FSP
+end box
+
+' START OF FLOW
+
+group Get Party Details
+ PAYER_FSP ->> ALS_API: Request to delete Participant details\nDEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to delete Participant details
+
+ alt oracleEndpoint match found & parties information retrieved
+ activate ALS_PARTICIPANT_HANDLER
+ '********************* Retrieve Oracle Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
+ '********************* Retrieve Switch Routing Information - START ************************
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
+ '********************* Retrieve Switch Routing Information - END ************************
+
+ |||
+
+ '********************* Validate FSPIOP-Source Participant - START ************************
+ group Validate FSPIOP-Source Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request FSPIOP-Source participant information\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{FSPIOP-Source}\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return FSPIOP-Source participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return FSPIOP-Source participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate FSPIOP-Source participant\nError code: 320x
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId == FSPIOP-Source\nError code: 3100
+ end group
+ '********************* Validate Participant - END ************************
+
+ |||
+
+ '********************* Request Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information for PayerFSP\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ORACLE_API
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Request Participant Information from Oracle Sequence]]
+ |||
+ end ref
+
+ '********************* Request Oracle Participant Information - END ************************
+
+ |||
+
+ '********************* Validate Participant Ownership - START ************************
+ ' Reference section 6.2.2.4 - Note: The ALS should verify that it is the Party’s current FSP that is deleting the FSP information. Is this adequate?
+ group Validate Participant Ownership
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId matches Participant Information retrieved from Oracle.\nError code: 3100
+ end group
+ '********************* Validate Participant - END ************************
+
+ |||
+
+ '********************* Delete Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to delete Participant's FSP details DEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to delete Participant's FSP details DEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result
+ deactivate ORACLE_API
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Delete Oracle Participant Information - END ************************
+ |||
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return delete request result
+ ALS_API ->> PAYER_FSP: Callback indiciating success:\nPUT - /participants/{TYPE}/{ID}?currency={CURRENCY}
+
+ else Validation failure or Oracle was unable process delete request
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
@startuml
' declare title
-title 7.1.0. Get Party Details
+title 7.2.0. Get Party Details
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistance Store
+' database - Database Persistence Store
' declare actors
actor "Payer FSP" as PAYER_FSP
group Get Party Details
'********************* Retrieve Oracle Routing Information - END ************************
|||
'********************* Retrieve Switch Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
- ref over ALS_PARTICIPANT_HANDLER, ALS_DB
- GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
- |||
- end ref
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
'********************* Retrieve Switch Routing Information - END ************************
|||
group Validate FSPIOP-Source Participant
group Get Party Details
'********************* Request Parties Information - END ************************
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- '********************* Get PayeeFSP Participant Information - START ************************
+ '********************* Get PayeeFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.1. Post Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistence Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ loop for Participant in ParticipantList
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map (ParticipantMap) based on {TYPE}
+
+ end loop
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ alt Validation passed and the ParticipantMap was created successfully
+
+ loop for keys in ParticipantMap -> TypeKey
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config based on TypeKey (and optional Currency)\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+' '********************* Fetch Oracle Routing Information - END ************************
+'
+' '********************* Retrieve Switch Routing Information - START ************************
+'
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' |||
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
+'
+' '********************* Retrieve Switch Routing Information - END ************************
+' |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant's FSP
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant (PARTICIPANT.fspId) information for {TypeKey}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Store results in ParticipantResultMap[TypeKey]
+
+ end loop
+
+ loop for keys in ParticipantResultMap -> TypeKey
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Combine ParticipantResultMap[TypeKey] results into ParticipantResult
+ end loop
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP (FSPIOP-Source) Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information from ParticipantResult
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Validation failure and/or the ParticipantMap was not created successfully
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP (FSPIOP-Source) Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
---
--- Table structure for table `centralSwitchEndpoint`
---
-
-DROP TABLE IF EXISTS `centralSwitchEndpoint`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `centralSwitchEndpoint` (
- `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(255) DEFAULT NULL,
- `description` varchar(512) DEFAULT NULL,
- `endpointTypeId` int(10) unsigned NOT NULL,
- `value` varchar(512) NOT NULL,
- `isDefault` tinyint(1) NOT NULL DEFAULT '0',
- `isActive` tinyint(1) NOT NULL DEFAULT '1',
- `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
- `createdBy` varchar(128) NOT NULL,
- PRIMARY KEY (`centralSwitchEndpointId`),
- KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
- CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `centralSwitchEndpoint`
---
-
-LOCK TABLES `centralSwitchEndpoint` WRITE;
-/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
-/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
-UNLOCK TABLES;
-
--
-- Table structure for table `currency`
--
CREATE TABLE `currency` (
LOCK TABLES `currency` WRITE;
/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
-INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-28 09:07:47'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-28 09:07:47'),('AFN','Afghanistan afghani',1,'2019-03-28 09:07:47'),('ALL','Albanian lek',1,'2019-03-28 09:07:47'),('AMD','Armenian dram',1,'2019-03-28 09:07:47'),('ANG','Netherlands Antillian guilder',1,'2019-03-28 09:07:47'),('AOA','Angolan kwanza',1,'2019-03-28 09:07:47'),('AOR','Angolan kwanza reajustado',1,'2019-03-28 09:07:47'),('ARS','Argentine peso',1,'2019-03-28 09:07:47'),('AUD','Australian dollar',1,'2019-03-28 09:07:47'),('AWG','Aruban guilder',1,'2019-03-28 09:07:47'),('AZN','Azerbaijanian new manat',1,'2019-03-28 09:07:47'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-28 09:07:47'),('BBD','Barbados dollar',1,'2019-03-28 09:07:47'),('BDT','Bangladeshi taka',1,'2019-03-28 09:07:47'),('BGN','Bulgarian lev',1,'2019-03-28 09:07:47'),('BHD','Bahraini dinar',1,'2019-03-28 09:07:47'),('BIF','Burundi franc',1,'2019-03-28 09:07:47'),('BMD','Bermudian dollar',1,'2019-03-28 09:07:47'),('BND','Brunei dollar',1,'2019-03-28 09:07:47'),('BOB','Bolivian boliviano',1,'2019-03-28 09:07:47'),('BRL','Brazilian real',1,'2019-03-28 09:07:47'),('BSD','Bahamian dollar',1,'2019-03-28 09:07:47'),('BTN','Bhutan ngultrum',1,'2019-03-28 09:07:47'),('BWP','Botswana pula',1,'2019-03-28 09:07:47'),('BYN','Belarusian ruble',1,'2019-03-28 09:07:47'),('BZD','Belize dollar',1,'2019-03-28 09:07:47'),('CAD','Canadian dollar',1,'2019-03-28 09:07:47'),('CDF','Congolese franc',1,'2019-03-28 09:07:47'),('CHF','Swiss franc',1,'2019-03-28 09:07:47'),('CLP','Chilean peso',1,'2019-03-28 09:07:47'),('CNY','Chinese yuan renminbi',1,'2019-03-28 09:07:47'),('COP','Colombian peso',1,'2019-03-28 09:07:47'),('CRC','Costa Rican colon',1,'2019-03-28 09:07:47'),('CUC','Cuban convertible peso',1,'2019-03-28 09:07:47'),('CUP','Cuban peso',1,'2019-03-28 09:07:47'),('CVE','Cape Verde escudo',1,'2019-03-28 09:07:47'),('CZK','Czech koruna',1,'2019-03-28 09:07:47'),('DJF','Djibouti franc',1,'2019-03-28 09:07:47'),('DKK','Danish krone',1,'2019-03-28 09:07:47'),('DOP','Dominican peso',1,'2019-03-28 09:07:47'),('DZD','Algerian dinar',1,'2019-03-28 09:07:47'),('EEK','Estonian kroon',1,'2019-03-28 09:07:47'),('EGP','Egyptian pound',1,'2019-03-28 09:07:47'),('ERN','Eritrean nakfa',1,'2019-03-28 09:07:47'),('ETB','Ethiopian birr',1,'2019-03-28 09:07:47'),('EUR','EU euro',1,'2019-03-28 09:07:47'),('FJD','Fiji dollar',1,'2019-03-28 09:07:47'),('FKP','Falkland Islands pound',1,'2019-03-28 09:07:47'),('GBP','British pound',1,'2019-03-28 09:07:47'),('GEL','Georgian lari',1,'2019-03-28 09:07:47'),('GGP','Guernsey pound',1,'2019-03-28 09:07:47'),('GHS','Ghanaian new cedi',1,'2019-03-28 09:07:47'),('GIP','Gibraltar pound',1,'2019-03-28 09:07:47'),('GMD','Gambian dalasi',1,'2019-03-28 09:07:47'),('GNF','Guinean franc',1,'2019-03-28 09:07:47'),('GTQ','Guatemalan quetzal',1,'2019-03-28 09:07:47'),('GYD','Guyana dollar',1,'2019-03-28 09:07:47'),('HKD','Hong Kong SAR dollar',1,'2019-03-28 09:07:47'),('HNL','Honduran lempira',1,'2019-03-28 09:07:47'),('HRK','Croatian kuna',1,'2019-03-28 09:07:47'),('HTG','Haitian gourde',1,'2019-03-28 09:07:47'),('HUF','Hungarian forint',1,'2019-03-28 09:07:47'),('IDR','Indonesian rupiah',1,'2019-03-28 09:07:47'),('ILS','Israeli new shekel',1,'2019-03-28 09:07:47'),('IMP','Isle of Man pound',1,'2019-03-28 09:07:47'),('INR','Indian rupee',1,'2019-03-28 09:07:47'),('IQD','Iraqi dinar',1,'2019-03-28 09:07:47'),('IRR','Iranian rial',1,'2019-03-28 09:07:47'),('ISK','Icelandic krona',1,'2019-03-28 09:07:47'),('JEP','Jersey pound',1,'2019-03-28 09:07:47'),('JMD','Jamaican dollar',1,'2019-03-28 09:07:47'),('JOD','Jordanian dinar',1,'2019-03-28 09:07:47'),('JPY','Japanese yen',1,'2019-03-28 09:07:47'),('KES','Kenyan shilling',1,'2019-03-28 09:07:47'),('KGS','Kyrgyz som',1,'2019-03-28 09:07:47'),('KHR','Cambodian riel',1,'2019-03-28 09:07:47'),('KMF','Comoros franc',1,'2019-03-28 09:07:47'),('KPW','North Korean won',1,'2019-03-28 09:07:47'),('KRW','South Korean won',1,'2019-03-28 09:07:47'),('KWD','Kuwaiti dinar',1,'2019-03-28 09:07:47'),('KYD','Cayman Islands dollar',1,'2019-03-28 09:07:47'),('KZT','Kazakh tenge',1,'2019-03-28 09:07:47'),('LAK','Lao kip',1,'2019-03-28 09:07:47'),('LBP','Lebanese pound',1,'2019-03-28 09:07:47'),('LKR','Sri Lanka rupee',1,'2019-03-28 09:07:47'),('LRD','Liberian dollar',1,'2019-03-28 09:07:47'),('LSL','Lesotho loti',1,'2019-03-28 09:07:47'),('LTL','Lithuanian litas',1,'2019-03-28 09:07:47'),('LVL','Latvian lats',1,'2019-03-28 09:07:47'),('LYD','Libyan dinar',1,'2019-03-28 09:07:47'),('MAD','Moroccan dirham',1,'2019-03-28 09:07:47'),('MDL','Moldovan leu',1,'2019-03-28 09:07:47'),('MGA','Malagasy ariary',1,'2019-03-28 09:07:47'),('MKD','Macedonian denar',1,'2019-03-28 09:07:47'),('MMK','Myanmar kyat',1,'2019-03-28 09:07:47'),('MNT','Mongolian tugrik',1,'2019-03-28 09:07:47'),('MOP','Macao SAR pataca',1,'2019-03-28 09:07:47'),('MRO','Mauritanian ouguiya',1,'2019-03-28 09:07:47'),('MUR','Mauritius rupee',1,'2019-03-28 09:07:47'),('MVR','Maldivian rufiyaa',1,'2019-03-28 09:07:47'),('MWK','Malawi kwacha',1,'2019-03-28 09:07:47'),('MXN','Mexican peso',1,'2019-03-28 09:07:47'),('MYR','Malaysian ringgit',1,'2019-03-28 09:07:47'),('MZN','Mozambique new metical',1,'2019-03-28 09:07:47'),('NAD','Namibian dollar',1,'2019-03-28 09:07:47'),('NGN','Nigerian naira',1,'2019-03-28 09:07:47'),('NIO','Nicaraguan cordoba oro',1,'2019-03-28 09:07:47'),('NOK','Norwegian krone',1,'2019-03-28 09:07:47'),('NPR','Nepalese rupee',1,'2019-03-28 09:07:47'),('NZD','New Zealand dollar',1,'2019-03-28 09:07:47'),('OMR','Omani rial',1,'2019-03-28 09:07:47'),('PAB','Panamanian balboa',1,'2019-03-28 09:07:47'),('PEN','Peruvian nuevo sol',1,'2019-03-28 09:07:47'),('PGK','Papua New Guinea kina',1,'2019-03-28 09:07:47'),('PHP','Philippine peso',1,'2019-03-28 09:07:47'),('PKR','Pakistani rupee',1,'2019-03-28 09:07:47'),('PLN','Polish zloty',1,'2019-03-28 09:07:47'),('PYG','Paraguayan guarani',1,'2019-03-28 09:07:47'),('QAR','Qatari rial',1,'2019-03-28 09:07:47'),('RON','Romanian new leu',1,'2019-03-28 09:07:47'),('RSD','Serbian dinar',1,'2019-03-28 09:07:47'),('RUB','Russian ruble',1,'2019-03-28 09:07:47'),('RWF','Rwandan franc',1,'2019-03-28 09:07:47'),('SAR','Saudi riyal',1,'2019-03-28 09:07:47'),('SBD','Solomon Islands dollar',1,'2019-03-28 09:07:47'),('SCR','Seychelles rupee',1,'2019-03-28 09:07:47'),('SDG','Sudanese pound',1,'2019-03-28 09:07:47'),('SEK','Swedish krona',1,'2019-03-28 09:07:47'),('SGD','Singapore dollar',1,'2019-03-28 09:07:47'),('SHP','Saint Helena pound',1,'2019-03-28 09:07:47'),('SLL','Sierra Leone leone',1,'2019-03-28 09:07:47'),('SOS','Somali shilling',1,'2019-03-28 09:07:47'),('SPL','Seborgan luigino',1,'2019-03-28 09:07:47'),('SRD','Suriname dollar',1,'2019-03-28 09:07:47'),('STD','Sao Tome and Principe dobra',1,'2019-03-28 09:07:47'),('SVC','El Salvador colon',1,'2019-03-28 09:07:47'),('SYP','Syrian pound',1,'2019-03-28 09:07:47'),('SZL','Swaziland lilangeni',1,'2019-03-28 09:07:47'),('THB','Thai baht',1,'2019-03-28 09:07:47'),('TJS','Tajik somoni',1,'2019-03-28 09:07:47'),('TMT','Turkmen new manat',1,'2019-03-28 09:07:47'),('TND','Tunisian dinar',1,'2019-03-28 09:07:47'),('TOP','Tongan pa\'anga',1,'2019-03-28 09:07:47'),('TRY','Turkish lira',1,'2019-03-28 09:07:47'),('TTD','Trinidad and Tobago dollar',1,'2019-03-28 09:07:47'),('TVD','Tuvaluan dollar',1,'2019-03-28 09:07:47'),('TWD','Taiwan New dollar',1,'2019-03-28 09:07:47'),('TZS','Tanzanian shilling',1,'2019-03-28 09:07:47'),('UAH','Ukrainian hryvnia',1,'2019-03-28 09:07:47'),('UGX','Uganda new shilling',1,'2019-03-28 09:07:47'),('USD','US dollar',1,'2019-03-28 09:07:47'),('UYU','Uruguayan peso uruguayo',1,'2019-03-28 09:07:47'),('UZS','Uzbekistani sum',1,'2019-03-28 09:07:47'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-28 09:07:47'),('VND','Vietnamese dong',1,'2019-03-28 09:07:47'),('VUV','Vanuatu vatu',1,'2019-03-28 09:07:47'),('WST','Samoan tala',1,'2019-03-28 09:07:47'),('XAF','CFA franc BEAC',1,'2019-03-28 09:07:47'),('XAG','Silver (ounce)',1,'2019-03-28 09:07:47'),('XAU','Gold (ounce)',1,'2019-03-28 09:07:47'),('XCD','East Caribbean dollar',1,'2019-03-28 09:07:47'),('XDR','IMF special drawing right',1,'2019-03-28 09:07:47'),('XFO','Gold franc',1,'2019-03-28 09:07:47'),('XFU','UIC franc',1,'2019-03-28 09:07:47'),('XOF','CFA franc BCEAO',1,'2019-03-28 09:07:47'),('XPD','Palladium (ounce)',1,'2019-03-28 09:07:47'),('XPF','CFP franc',1,'2019-03-28 09:07:47'),('XPT','Platinum (ounce)',1,'2019-03-28 09:07:47'),('YER','Yemeni rial',1,'2019-03-28 09:07:47'),('ZAR','South African rand',1,'2019-03-28 09:07:47'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-28 09:07:47'),('ZMW','Zambian kwacha',1,'2019-03-28 09:07:47'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-28 09:07:47'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-28 09:07:47'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-28 09:07:47'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `endpointType` (
LOCK TABLES `endpointType` WRITE;
/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
-INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `migration` (
`batch` int(11) DEFAULT NULL,
`migration_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
CREATE TABLE `migration` (
LOCK TABLES `migration` WRITE;
/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
-INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-28 11:07:46'),(2,'02_endpointType.js',1,'2019-03-28 11:07:46'),(3,'03_endpointType-indexes.js',1,'2019-03-28 11:07:46'),(4,'04_partyIdType.js',1,'2019-03-28 11:07:46'),(5,'05_partyIdType-indexes.js',1,'2019-03-28 11:07:46'),(6,'08_oracleEndpoint.js',1,'2019-03-28 11:07:47'),(7,'09_oracleEndpoint-indexes.js',1,'2019-03-28 11:07:47');
/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `oracleEndpoint` (
`oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partyIdTypeId` int(10) unsigned NOT NULL,
`endpointTypeId` int(10) unsigned NOT NULL,
- `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
`currencyId` varchar(255) DEFAULT NULL,
`value` varchar(512) NOT NULL,
`isDefault` tinyint(1) NOT NULL DEFAULT '0',
CREATE TABLE `oracleEndpoint` (
`createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` varchar(128) NOT NULL,
PRIMARY KEY (`oracleEndpointId`),
- KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
- CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
CREATE TABLE `partyIdType` (
LOCK TABLES `partyIdType` WRITE;
/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
-INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-28 09:07:47'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-28 09:07:47'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-28 09:07:47'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-28 09:07:47'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-28 09:07:47'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2019-03-18 17:52:06
+-- Dump completed on 2019-03-28 11:09:54
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
* [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
* [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
- * [DEL Participants](mojaloop-technical-overview/account-lookup-service/als-del-participants.md)
* [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
* [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [Helm](repositories/helm.md)
* [Project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
-* [Glossary of Terms](glossary.md)
* [Changelog](changelog.md)
Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.d
* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
-### Versions
-
-| Version | Info | Release Date |
-| --- | --- | --- |
-| 1.0 | Initial release | 2018-11-01 |
-| | | |
-
## ALS Oracle API
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
Notes:
- `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- `GET /participants` response body returns a list of Participants, containing `currency`.
- `POST /participants` request body includes the `currency` as part of each record.
-
-### Versions
-
-| Version | Info | Release Date |
-| --- | --- | --- |
-| 1.1 | `PUT /participants/{Type}/{ID}` returns a `HTTP 204 - No Content on success`. This was previously returned `HTTP 200 - Success` `POST /participants` now returns a list a `partyList` either containing a `PartyIdInfo` or `ErrorInformation`. This is alignment to the Mojaloop Specification. | 2019-03-28 |
-| 1.0 | Initial release | 2019-03-08 |
-| | | |
\ No newline at end of file
----
-showToc: false
----
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
swagger: '2.0'
info:
- version: '1.1'
+ version: '1.0'
title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
contact: {}
basePath: /
schemes: []
consumes:
-- application/json
+ - application/json
produces:
-- application/json
+ - application/json
paths:
/participants/{Type}/{ID}:
get:
description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Look up participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDGet
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
200:
description: OK
paths:
description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
summary: Return participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPut
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: accept
- in: header
- required: false
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
- 204:
- description: No Content
+ 200:
+ description: OK
headers: {}
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
paths:
description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
summary: Create participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
201:
description: Created
paths:
description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Delete participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDDelete
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
204:
description: No Content
paths:
description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
summary: Batch create participant information #fail these as a batch or accept it as a batch
tags:
- - participants
+ - participants
operationId: ParticipantsPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsPostRequest'
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
201:
description: Created
headers: {}
- schema:
- $ref: '#/definitions/ParticipantsIDPutResponse'
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
schema:
definitions:
example: AED
type: string
enum:
- - AED
- - AFN
- - ALL
- - AMD
- - ANG
- - AOA
- - ARS
- - AUD
- - AWG
- - AZN
- - BAM
- - BBD
- - BDT
- - BGN
- - BHD
- - BIF
- - BMD
- - BND
- - BOB
- - BRL
- - BSD
- - BTN
- - BWP
- - BYN
- - BZD
- - CAD
- - CDF
- - CHF
- - CLP
- - CNY
- - COP
- - CRC
- - CUC
- - CUP
- - CVE
- - CZK
- - DJF
- - DKK
- - DOP
- - DZD
- - EGP
- - ERN
- - ETB
- - EUR
- - FJD
- - FKP
- - GBP
- - GEL
- - GGP
- - GHS
- - GIP
- - GMD
- - GNF
- - GTQ
- - GYD
- - HKD
- - HNL
- - HRK
- - HTG
- - HUF
- - IDR
- - ILS
- - IMP
- - INR
- - IQD
- - IRR
- - ISK
- - JEP
- - JMD
- - JOD
- - JPY
- - KES
- - KGS
- - KHR
- - KMF
- - KPW
- - KRW
- - KWD
- - KYD
- - KZT
- - LAK
- - LBP
- - LKR
- - LRD
- - LSL
- - LYD
- - MAD
- - MDL
- - MGA
- - MKD
- - MMK
- - MNT
- - MOP
- - MRO
- - MUR
- - MVR
- - MWK
- - MXN
- - MYR
- - MZN
- - NAD
- - NGN
- - NIO
- - NOK
- - NPR
- - NZD
- - OMR
- - PAB
- - PEN
- - PGK
- - PHP
- - PKR
- - PLN
- - PYG
- - QAR
- - RON
- - RSD
- - RUB
- - RWF
- - SAR
- - SBD
- - SCR
- - SDG
- - SEK
- - SGD
- - SHP
- - SLL
- - SOS
- - SPL
- - SRD
- - STD
- - SVC
- - SYP
- - SZL
- - THB
- - TJS
- - TMT
- - TND
- - TOP
- - TRY
- - TTD
- - TVD
- - TWD
- - TZS
- - UAH
- - UGX
- - USD
- - UYU
- - UZS
- - VEF
- - VND
- - VUV
- - WST
- - XAF
- - XCD
- - XDR
- - XOF
- - XPF
- - YER
- - ZAR
- - ZMW
- - ZWD
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
PartyIdTypeEnum:
title: PartyIdTypeEnum
description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
example: MSISDN
type: string
enum:
- - MSISDN
- - EMAIL
- - PERSONAL_ID
- - BUSINESS
- - DEVICE
- - ACCOUNT_ID
- - IBAN
- - ALIAS
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
ErrorInformation:
title: ErrorInformation
description: Data model for the complex type ErrorInformation.
definitions:
extensionList:
$ref: '#/definitions/ExtensionList'
required:
- - errorCode
- - errorDescription
+ - errorCode
+ - errorDescription
ErrorInformationResponse:
title: ErrorInformationResponse
description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
definitions:
description: Extension value.
type: string
required:
- - key
- - value
+ - key
+ - value
ExtensionList:
title: ExtensionList
description: Data model for the complex type ExtensionList
definitions:
minItems: 1
maxItems: 16
required:
- - extension
+ - extension
ParticipantsTypeIDGetResponse:
title: ParticipantsTypeIDGetResponse
description: OK
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
ParticipantsPostRequest:
title: ParticipantsPostRequest
description: POST /participants object
definitions:
minItems: 1
maxItems: 10000
required:
- - requestId
- - partyList
+ - requestId
+ - partyList
PartyIdInfo:
title: PartyIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
type: string
required:
- - partyIdType
- - partyIdentifier
- ParticipantsIDPutResponse:
- title: ParticipantsIDPutResponse
- type: object
- description: PUT /participants/{ID} object
- properties:
- partyList:
- type: array
- items:
- $ref: '#/definitions/PartyResult'
- minItems: 1
- maxItems: 10000
- description: List of PartyResult elements that were either created or failed to be created.
- currency:
- type: string
- description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
- required:
- - partyList
- PartyResult:
- title: PartyResult
- type: object
- description: Data model for the complex type PartyResult.
- properties:
- partyId:
- $ref: '#/definitions/PartyIdInfo'
- errorInformation:
- $ref: '#/definitions/ErrorInformation'
- required:
- - partyId
+ - partyIdType
+ - partyIdentifier
PartyTypeIdInfo:
title: PartyTypeIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
tags:
-- name: participants
- description: ''
+ - name: participants
+ description: ''
----
-showToc: false
----
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
\ No newline at end of file
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
In general, we are looking for example implementations and bug fixes, and projec
Join the [Mojaloop Slack Discussions](https://mojaloop-slack.herokuapp.com/) to connect with other developers.
-Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
+Also checkout the [FAQ](https://github.com/mojaloop/documentation/blob/master/contributors-guide/frequently-asked-questions.md)
### What is the current release?
At of March 6th 2019, the active releases for core central services are as below
* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
-
-| Version | 4.0.0 | 5.3.0 | 5.4.0 | 5.0 |
-| --- | :---: | :---: | :---: | :---: |
-| Released | x | x | x | x |
-| QA Framework | x |
\ No newline at end of file
Use-cases that have been implemented over and above for Hub Operational use:
### 1.1 Account Lookup Service (ALS)
The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
-#### 1.1.1 Assumptions
-
-* The ALS design will only cater for a single switch for the time being.
-* Support for multiple switches will utilise the same DNS resolution mechanism that is being developed for the Cross Border/Network design.
-
-#### 1.1.2 Routing
-
The routing configuration will be based on the following:
* PartyIdType - See section `7.5.6` of the Mojaloop Specification
-* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, however `isDefault` indicator must be set to `true` if the `Currency` is not provided.
-* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
-
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
### 1.2 ALS Oracle
The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
# GET Participants
-Design for the retrieval of a Participant by a DFSP.
-
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participants-7.1.0.plantuml", relativeTo=file %}
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
{% enduml %}
# GET Parties
-Design for the retrieval of a Party by a DFSP.
-
## Sequence Diagram
{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
# Sequence Diagram for POST Participants
-Design for the creation of a Participant by a DFSP.
-
## Notes
- Operation only supports requests which contain:
- All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
- All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-- Duplicate POST Requests with matching TYPE and optional CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.1.1.plantuml", relativeTo=file %}
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
{% enduml %}
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A10. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A9. User Lookup GET /parties/<idType>/<id>A9. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A11. User Lookup PUT /parties/<idType>/<id>A11. User Lookup <br>PUT /parties/<idType>/<id>A14. User Lookup PUT /parties/<idType>/<id>A14. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA8. Retrieve Participant End-point DataA8. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A12. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA6. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A13. Retrieve Participant End-point Data<font style="font-size: 13px">A13. Retrieve Participant End-point Data</font>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
@startuml
' declare title
-title 7.2.0. Get Party Details
+title 7.1.0. Get Party Details
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistence Store
+' database - Database Persistance Store
' declare actors
actor "Payer FSP" as PAYER_FSP
group Get Party Details
'********************* Retrieve Oracle Routing Information - END ************************
|||
'********************* Retrieve Switch Routing Information - START ************************
-' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
-' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
-' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
-' |||
-' end ref
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
'********************* Retrieve Switch Routing Information - END ************************
|||
group Validate FSPIOP-Source Participant
group Get Party Details
'********************* Request Parties Information - END ************************
- '********************* Get PayerFSP Participant End-point Information - START ************************
+ '********************* Get PayerFSP Participant Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
- '********************* Get PayerFSP Participant End-point Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
- '********************* Get PayerFSP Participant End-point Information - START ************************
+ '********************* Get PayerFSP Participant Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant End-point Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- '********************* Get PayeeFSP Participant End-point Information - START ************************
+ '********************* Get PayeeFSP Participant Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant End-point Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.2.1. Post Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+' hnote over ALS_API #lightyellow
+' "POST /participant" operation only supports requests which contain:
+' - All Participant's FSPs match the FSPIOP-Source
+' - All Participant's TYPEs are the same
+' - All Participant's will be of the same Currency
+' end note
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ loop for keys in ParticipantMap -> TYPE
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+ '********************* Fetch Oracle Routing Information - END ************************
+
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ |||
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant
+ loop for Participant in ParticipantLis
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same\nError code: 3100
+
+ end loop
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of Endpoints
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Empty list of End-Points returned or Error occurred
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+ deactivate ALS_API
+
+ deactivate ALS_PARTICIPANT_HANDLER
+ end loop
+end
+@enduml
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+--
+-- Table structure for table `centralSwitchEndpoint`
+--
+
+DROP TABLE IF EXISTS `centralSwitchEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `centralSwitchEndpoint` (
+ `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`centralSwitchEndpointId`),
+ KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `centralSwitchEndpoint`
+--
+
+LOCK TABLES `centralSwitchEndpoint` WRITE;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
--
-- Table structure for table `currency`
--
CREATE TABLE `currency` (
LOCK TABLES `currency` WRITE;
/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
-INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-28 09:07:47'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-28 09:07:47'),('AFN','Afghanistan afghani',1,'2019-03-28 09:07:47'),('ALL','Albanian lek',1,'2019-03-28 09:07:47'),('AMD','Armenian dram',1,'2019-03-28 09:07:47'),('ANG','Netherlands Antillian guilder',1,'2019-03-28 09:07:47'),('AOA','Angolan kwanza',1,'2019-03-28 09:07:47'),('AOR','Angolan kwanza reajustado',1,'2019-03-28 09:07:47'),('ARS','Argentine peso',1,'2019-03-28 09:07:47'),('AUD','Australian dollar',1,'2019-03-28 09:07:47'),('AWG','Aruban guilder',1,'2019-03-28 09:07:47'),('AZN','Azerbaijanian new manat',1,'2019-03-28 09:07:47'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-28 09:07:47'),('BBD','Barbados dollar',1,'2019-03-28 09:07:47'),('BDT','Bangladeshi taka',1,'2019-03-28 09:07:47'),('BGN','Bulgarian lev',1,'2019-03-28 09:07:47'),('BHD','Bahraini dinar',1,'2019-03-28 09:07:47'),('BIF','Burundi franc',1,'2019-03-28 09:07:47'),('BMD','Bermudian dollar',1,'2019-03-28 09:07:47'),('BND','Brunei dollar',1,'2019-03-28 09:07:47'),('BOB','Bolivian boliviano',1,'2019-03-28 09:07:47'),('BRL','Brazilian real',1,'2019-03-28 09:07:47'),('BSD','Bahamian dollar',1,'2019-03-28 09:07:47'),('BTN','Bhutan ngultrum',1,'2019-03-28 09:07:47'),('BWP','Botswana pula',1,'2019-03-28 09:07:47'),('BYN','Belarusian ruble',1,'2019-03-28 09:07:47'),('BZD','Belize dollar',1,'2019-03-28 09:07:47'),('CAD','Canadian dollar',1,'2019-03-28 09:07:47'),('CDF','Congolese franc',1,'2019-03-28 09:07:47'),('CHF','Swiss franc',1,'2019-03-28 09:07:47'),('CLP','Chilean peso',1,'2019-03-28 09:07:47'),('CNY','Chinese yuan renminbi',1,'2019-03-28 09:07:47'),('COP','Colombian peso',1,'2019-03-28 09:07:47'),('CRC','Costa Rican colon',1,'2019-03-28 09:07:47'),('CUC','Cuban convertible peso',1,'2019-03-28 09:07:47'),('CUP','Cuban peso',1,'2019-03-28 09:07:47'),('CVE','Cape Verde escudo',1,'2019-03-28 09:07:47'),('CZK','Czech koruna',1,'2019-03-28 09:07:47'),('DJF','Djibouti franc',1,'2019-03-28 09:07:47'),('DKK','Danish krone',1,'2019-03-28 09:07:47'),('DOP','Dominican peso',1,'2019-03-28 09:07:47'),('DZD','Algerian dinar',1,'2019-03-28 09:07:47'),('EEK','Estonian kroon',1,'2019-03-28 09:07:47'),('EGP','Egyptian pound',1,'2019-03-28 09:07:47'),('ERN','Eritrean nakfa',1,'2019-03-28 09:07:47'),('ETB','Ethiopian birr',1,'2019-03-28 09:07:47'),('EUR','EU euro',1,'2019-03-28 09:07:47'),('FJD','Fiji dollar',1,'2019-03-28 09:07:47'),('FKP','Falkland Islands pound',1,'2019-03-28 09:07:47'),('GBP','British pound',1,'2019-03-28 09:07:47'),('GEL','Georgian lari',1,'2019-03-28 09:07:47'),('GGP','Guernsey pound',1,'2019-03-28 09:07:47'),('GHS','Ghanaian new cedi',1,'2019-03-28 09:07:47'),('GIP','Gibraltar pound',1,'2019-03-28 09:07:47'),('GMD','Gambian dalasi',1,'2019-03-28 09:07:47'),('GNF','Guinean franc',1,'2019-03-28 09:07:47'),('GTQ','Guatemalan quetzal',1,'2019-03-28 09:07:47'),('GYD','Guyana dollar',1,'2019-03-28 09:07:47'),('HKD','Hong Kong SAR dollar',1,'2019-03-28 09:07:47'),('HNL','Honduran lempira',1,'2019-03-28 09:07:47'),('HRK','Croatian kuna',1,'2019-03-28 09:07:47'),('HTG','Haitian gourde',1,'2019-03-28 09:07:47'),('HUF','Hungarian forint',1,'2019-03-28 09:07:47'),('IDR','Indonesian rupiah',1,'2019-03-28 09:07:47'),('ILS','Israeli new shekel',1,'2019-03-28 09:07:47'),('IMP','Isle of Man pound',1,'2019-03-28 09:07:47'),('INR','Indian rupee',1,'2019-03-28 09:07:47'),('IQD','Iraqi dinar',1,'2019-03-28 09:07:47'),('IRR','Iranian rial',1,'2019-03-28 09:07:47'),('ISK','Icelandic krona',1,'2019-03-28 09:07:47'),('JEP','Jersey pound',1,'2019-03-28 09:07:47'),('JMD','Jamaican dollar',1,'2019-03-28 09:07:47'),('JOD','Jordanian dinar',1,'2019-03-28 09:07:47'),('JPY','Japanese yen',1,'2019-03-28 09:07:47'),('KES','Kenyan shilling',1,'2019-03-28 09:07:47'),('KGS','Kyrgyz som',1,'2019-03-28 09:07:47'),('KHR','Cambodian riel',1,'2019-03-28 09:07:47'),('KMF','Comoros franc',1,'2019-03-28 09:07:47'),('KPW','North Korean won',1,'2019-03-28 09:07:47'),('KRW','South Korean won',1,'2019-03-28 09:07:47'),('KWD','Kuwaiti dinar',1,'2019-03-28 09:07:47'),('KYD','Cayman Islands dollar',1,'2019-03-28 09:07:47'),('KZT','Kazakh tenge',1,'2019-03-28 09:07:47'),('LAK','Lao kip',1,'2019-03-28 09:07:47'),('LBP','Lebanese pound',1,'2019-03-28 09:07:47'),('LKR','Sri Lanka rupee',1,'2019-03-28 09:07:47'),('LRD','Liberian dollar',1,'2019-03-28 09:07:47'),('LSL','Lesotho loti',1,'2019-03-28 09:07:47'),('LTL','Lithuanian litas',1,'2019-03-28 09:07:47'),('LVL','Latvian lats',1,'2019-03-28 09:07:47'),('LYD','Libyan dinar',1,'2019-03-28 09:07:47'),('MAD','Moroccan dirham',1,'2019-03-28 09:07:47'),('MDL','Moldovan leu',1,'2019-03-28 09:07:47'),('MGA','Malagasy ariary',1,'2019-03-28 09:07:47'),('MKD','Macedonian denar',1,'2019-03-28 09:07:47'),('MMK','Myanmar kyat',1,'2019-03-28 09:07:47'),('MNT','Mongolian tugrik',1,'2019-03-28 09:07:47'),('MOP','Macao SAR pataca',1,'2019-03-28 09:07:47'),('MRO','Mauritanian ouguiya',1,'2019-03-28 09:07:47'),('MUR','Mauritius rupee',1,'2019-03-28 09:07:47'),('MVR','Maldivian rufiyaa',1,'2019-03-28 09:07:47'),('MWK','Malawi kwacha',1,'2019-03-28 09:07:47'),('MXN','Mexican peso',1,'2019-03-28 09:07:47'),('MYR','Malaysian ringgit',1,'2019-03-28 09:07:47'),('MZN','Mozambique new metical',1,'2019-03-28 09:07:47'),('NAD','Namibian dollar',1,'2019-03-28 09:07:47'),('NGN','Nigerian naira',1,'2019-03-28 09:07:47'),('NIO','Nicaraguan cordoba oro',1,'2019-03-28 09:07:47'),('NOK','Norwegian krone',1,'2019-03-28 09:07:47'),('NPR','Nepalese rupee',1,'2019-03-28 09:07:47'),('NZD','New Zealand dollar',1,'2019-03-28 09:07:47'),('OMR','Omani rial',1,'2019-03-28 09:07:47'),('PAB','Panamanian balboa',1,'2019-03-28 09:07:47'),('PEN','Peruvian nuevo sol',1,'2019-03-28 09:07:47'),('PGK','Papua New Guinea kina',1,'2019-03-28 09:07:47'),('PHP','Philippine peso',1,'2019-03-28 09:07:47'),('PKR','Pakistani rupee',1,'2019-03-28 09:07:47'),('PLN','Polish zloty',1,'2019-03-28 09:07:47'),('PYG','Paraguayan guarani',1,'2019-03-28 09:07:47'),('QAR','Qatari rial',1,'2019-03-28 09:07:47'),('RON','Romanian new leu',1,'2019-03-28 09:07:47'),('RSD','Serbian dinar',1,'2019-03-28 09:07:47'),('RUB','Russian ruble',1,'2019-03-28 09:07:47'),('RWF','Rwandan franc',1,'2019-03-28 09:07:47'),('SAR','Saudi riyal',1,'2019-03-28 09:07:47'),('SBD','Solomon Islands dollar',1,'2019-03-28 09:07:47'),('SCR','Seychelles rupee',1,'2019-03-28 09:07:47'),('SDG','Sudanese pound',1,'2019-03-28 09:07:47'),('SEK','Swedish krona',1,'2019-03-28 09:07:47'),('SGD','Singapore dollar',1,'2019-03-28 09:07:47'),('SHP','Saint Helena pound',1,'2019-03-28 09:07:47'),('SLL','Sierra Leone leone',1,'2019-03-28 09:07:47'),('SOS','Somali shilling',1,'2019-03-28 09:07:47'),('SPL','Seborgan luigino',1,'2019-03-28 09:07:47'),('SRD','Suriname dollar',1,'2019-03-28 09:07:47'),('STD','Sao Tome and Principe dobra',1,'2019-03-28 09:07:47'),('SVC','El Salvador colon',1,'2019-03-28 09:07:47'),('SYP','Syrian pound',1,'2019-03-28 09:07:47'),('SZL','Swaziland lilangeni',1,'2019-03-28 09:07:47'),('THB','Thai baht',1,'2019-03-28 09:07:47'),('TJS','Tajik somoni',1,'2019-03-28 09:07:47'),('TMT','Turkmen new manat',1,'2019-03-28 09:07:47'),('TND','Tunisian dinar',1,'2019-03-28 09:07:47'),('TOP','Tongan pa\'anga',1,'2019-03-28 09:07:47'),('TRY','Turkish lira',1,'2019-03-28 09:07:47'),('TTD','Trinidad and Tobago dollar',1,'2019-03-28 09:07:47'),('TVD','Tuvaluan dollar',1,'2019-03-28 09:07:47'),('TWD','Taiwan New dollar',1,'2019-03-28 09:07:47'),('TZS','Tanzanian shilling',1,'2019-03-28 09:07:47'),('UAH','Ukrainian hryvnia',1,'2019-03-28 09:07:47'),('UGX','Uganda new shilling',1,'2019-03-28 09:07:47'),('USD','US dollar',1,'2019-03-28 09:07:47'),('UYU','Uruguayan peso uruguayo',1,'2019-03-28 09:07:47'),('UZS','Uzbekistani sum',1,'2019-03-28 09:07:47'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-28 09:07:47'),('VND','Vietnamese dong',1,'2019-03-28 09:07:47'),('VUV','Vanuatu vatu',1,'2019-03-28 09:07:47'),('WST','Samoan tala',1,'2019-03-28 09:07:47'),('XAF','CFA franc BEAC',1,'2019-03-28 09:07:47'),('XAG','Silver (ounce)',1,'2019-03-28 09:07:47'),('XAU','Gold (ounce)',1,'2019-03-28 09:07:47'),('XCD','East Caribbean dollar',1,'2019-03-28 09:07:47'),('XDR','IMF special drawing right',1,'2019-03-28 09:07:47'),('XFO','Gold franc',1,'2019-03-28 09:07:47'),('XFU','UIC franc',1,'2019-03-28 09:07:47'),('XOF','CFA franc BCEAO',1,'2019-03-28 09:07:47'),('XPD','Palladium (ounce)',1,'2019-03-28 09:07:47'),('XPF','CFP franc',1,'2019-03-28 09:07:47'),('XPT','Platinum (ounce)',1,'2019-03-28 09:07:47'),('YER','Yemeni rial',1,'2019-03-28 09:07:47'),('ZAR','South African rand',1,'2019-03-28 09:07:47'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-28 09:07:47'),('ZMW','Zambian kwacha',1,'2019-03-28 09:07:47'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-28 09:07:47'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-28 09:07:47'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-28 09:07:47'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-28 09:07:47');
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `endpointType` (
LOCK TABLES `endpointType` WRITE;
/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
-INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-28 09:07:47');
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `migration` (
`batch` int(11) DEFAULT NULL,
`migration_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
CREATE TABLE `migration` (
LOCK TABLES `migration` WRITE;
/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
-INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-28 11:07:46'),(2,'02_endpointType.js',1,'2019-03-28 11:07:46'),(3,'03_endpointType-indexes.js',1,'2019-03-28 11:07:46'),(4,'04_partyIdType.js',1,'2019-03-28 11:07:46'),(5,'05_partyIdType-indexes.js',1,'2019-03-28 11:07:46'),(6,'08_oracleEndpoint.js',1,'2019-03-28 11:07:47'),(7,'09_oracleEndpoint-indexes.js',1,'2019-03-28 11:07:47');
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `oracleEndpoint` (
`oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partyIdTypeId` int(10) unsigned NOT NULL,
`endpointTypeId` int(10) unsigned NOT NULL,
+ `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
`currencyId` varchar(255) DEFAULT NULL,
`value` varchar(512) NOT NULL,
`isDefault` tinyint(1) NOT NULL DEFAULT '0',
CREATE TABLE `oracleEndpoint` (
`createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` varchar(128) NOT NULL,
PRIMARY KEY (`oracleEndpointId`),
+ KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
CREATE TABLE `partyIdType` (
LOCK TABLES `partyIdType` WRITE;
/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
-INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-28 09:07:47'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-28 09:07:47'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-28 09:07:47'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-28 09:07:47'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-28 09:07:47'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-28 09:07:47');
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2019-03-28 11:09:54
+-- Dump completed on 2019-03-18 17:52:06
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@startuml
' declare title
-title 7.1.2. Delete Party Details
+title 7.1.2. Delete Participant Details
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistance Store
+' database - Database Persistence Store
' declare actors
actor "Payer FSP" as PAYER_FSP
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistance Store
+' database - Database Persistence Store
' declare actors
actor "Payer FSP" as PAYER_FSP
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistance Store
+' database - Database Persistence Store
' declare actors
actor "Payer FSP" as PAYER_FSP
autonumber
' Actor Keys:
' boundary - APIs/Interfaces, etc
' entity - Database Access Objects
-' database - Database Persistance Store
+' database - Database Persistence Store
' declare actors
actor "Payer FSP" as PAYER_FSP
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
* [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
* [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
+ * [DEL Participants](mojaloop-technical-overview/account-lookup-service/als-del-participants.md)
* [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
* [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.d
* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
+### Versions
+
+| Version | Info | Release Date |
+| --- | --- | --- |
+| 1.0 | Initial release | 2018-11-01 |
+| | | |
+
## ALS Oracle API
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
Notes:
- `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- `GET /participants` response body returns a list of Participants, containing `currency`.
- `POST /participants` request body includes the `currency` as part of each record.
+
+### Versions
+
+| Version | Info | Release Date |
+| --- | --- | --- |
+| 1.1 | `PUT /participants/{Type}/{ID}` returns a `HTTP 204 - No Content on success`. This was previously returned `HTTP 200 - Success` `POST /participants` now returns a list a `partyList` either containing a `PartyIdInfo` or `ErrorInformation`. This is alignment to the Mojaloop Specification. | 2019-03-28 |
+| 1.0 | Initial release | 2019-03-08 |
+| | | |
\ No newline at end of file
+---
+showToc: false
+---
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
swagger: '2.0'
info:
- version: '1.0'
+ version: '1.1'
title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
contact: {}
basePath: /
schemes: []
consumes:
- - application/json
+- application/json
produces:
- - application/json
+- application/json
paths:
/participants/{Type}/{ID}:
get:
description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Look up participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDGet
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
200:
description: OK
paths:
description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
summary: Return participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPut
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: accept
- in: header
- required: false
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
- 200:
- description: OK
+ 204:
+ description: No Content
headers: {}
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
paths:
description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
summary: Create participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsTypeIDPutRequest'
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
responses:
201:
description: Created
paths:
description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
summary: Delete participant information
tags:
- - participants
+ - participants
operationId: ParticipantsByTypeAndIDDelete
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: Type
- in: path
- required: true
- type: string
- description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
- - name: ID
- in: path
- required: true
- type: string
- description: The ID related to the Type, if MSISDN then this is the mobile number being requested
- - name: Currency
- in: query
- required: false
- type: string
- description: The Currency code applicable to the ID being requested
- - name: SubId
- in: query
- required: false
- type: string
- description: The SubId related to the ID, or the Type
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
204:
description: No Content
paths:
description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
summary: Batch create participant information #fail these as a batch or accept it as a batch
tags:
- - participants
+ - participants
operationId: ParticipantsPost
deprecated: false
produces:
- - application/json
+ - application/json
parameters:
- - name: accept
- in: header
- required: true
- type: string
- description: The Accept header field indicates the version of the API the client would like the server to use.
- - name: content-type
- in: header
- required: true
- type: string
- description: The Content-Type header indicates the specific version of the API used to send the payload body.
- - name: date
- in: header
- required: true
- type: string
- description: The Date header field indicates the date when the request was sent.
- - name: fspiop-source
- in: header
- required: true
- type: string
- description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
- - name: body
- in: body
- required: true
- description: ''
- schema:
- $ref: '#/definitions/ParticipantsPostRequest'
- - name: content-length
- in: header
- required: false
- type: integer
- format: int32
- exclusiveMaximum: false
- exclusiveMinimum: false
- description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
- - name: x-forwarded-for
- in: header
- required: false
- type: string
- description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
- - name: fspiop-destination
- in: header
- required: false
- type: string
- description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
- - name: fspiop-encryption
- in: header
- required: false
- type: string
- description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
- - name: fspiop-signature
- in: header
- required: false
- type: string
- description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
- - name: fspiop-uri
- in: header
- required: false
- type: string
- description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
- - name: fspiop-http-method
- in: header
- required: false
- type: string
- description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
responses:
201:
description: Created
headers: {}
+ schema:
+ $ref: '#/definitions/ParticipantsIDPutResponse'
400:
description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
schema:
definitions:
example: AED
type: string
enum:
- - AED
- - AFN
- - ALL
- - AMD
- - ANG
- - AOA
- - ARS
- - AUD
- - AWG
- - AZN
- - BAM
- - BBD
- - BDT
- - BGN
- - BHD
- - BIF
- - BMD
- - BND
- - BOB
- - BRL
- - BSD
- - BTN
- - BWP
- - BYN
- - BZD
- - CAD
- - CDF
- - CHF
- - CLP
- - CNY
- - COP
- - CRC
- - CUC
- - CUP
- - CVE
- - CZK
- - DJF
- - DKK
- - DOP
- - DZD
- - EGP
- - ERN
- - ETB
- - EUR
- - FJD
- - FKP
- - GBP
- - GEL
- - GGP
- - GHS
- - GIP
- - GMD
- - GNF
- - GTQ
- - GYD
- - HKD
- - HNL
- - HRK
- - HTG
- - HUF
- - IDR
- - ILS
- - IMP
- - INR
- - IQD
- - IRR
- - ISK
- - JEP
- - JMD
- - JOD
- - JPY
- - KES
- - KGS
- - KHR
- - KMF
- - KPW
- - KRW
- - KWD
- - KYD
- - KZT
- - LAK
- - LBP
- - LKR
- - LRD
- - LSL
- - LYD
- - MAD
- - MDL
- - MGA
- - MKD
- - MMK
- - MNT
- - MOP
- - MRO
- - MUR
- - MVR
- - MWK
- - MXN
- - MYR
- - MZN
- - NAD
- - NGN
- - NIO
- - NOK
- - NPR
- - NZD
- - OMR
- - PAB
- - PEN
- - PGK
- - PHP
- - PKR
- - PLN
- - PYG
- - QAR
- - RON
- - RSD
- - RUB
- - RWF
- - SAR
- - SBD
- - SCR
- - SDG
- - SEK
- - SGD
- - SHP
- - SLL
- - SOS
- - SPL
- - SRD
- - STD
- - SVC
- - SYP
- - SZL
- - THB
- - TJS
- - TMT
- - TND
- - TOP
- - TRY
- - TTD
- - TVD
- - TWD
- - TZS
- - UAH
- - UGX
- - USD
- - UYU
- - UZS
- - VEF
- - VND
- - VUV
- - WST
- - XAF
- - XCD
- - XDR
- - XOF
- - XPF
- - YER
- - ZAR
- - ZMW
- - ZWD
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
PartyIdTypeEnum:
title: PartyIdTypeEnum
description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
example: MSISDN
type: string
enum:
- - MSISDN
- - EMAIL
- - PERSONAL_ID
- - BUSINESS
- - DEVICE
- - ACCOUNT_ID
- - IBAN
- - ALIAS
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
ErrorInformation:
title: ErrorInformation
description: Data model for the complex type ErrorInformation.
definitions:
extensionList:
$ref: '#/definitions/ExtensionList'
required:
- - errorCode
- - errorDescription
+ - errorCode
+ - errorDescription
ErrorInformationResponse:
title: ErrorInformationResponse
description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
definitions:
description: Extension value.
type: string
required:
- - key
- - value
+ - key
+ - value
ExtensionList:
title: ExtensionList
description: Data model for the complex type ExtensionList
definitions:
minItems: 1
maxItems: 16
required:
- - extension
+ - extension
ParticipantsTypeIDGetResponse:
title: ParticipantsTypeIDGetResponse
description: OK
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
ParticipantsPostRequest:
title: ParticipantsPostRequest
description: POST /participants object
definitions:
minItems: 1
maxItems: 10000
required:
- - requestId
- - partyList
+ - requestId
+ - partyList
PartyIdInfo:
title: PartyIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
type: string
required:
- - partyIdType
- - partyIdentifier
+ - partyIdType
+ - partyIdentifier
+ ParticipantsIDPutResponse:
+ title: ParticipantsIDPutResponse
+ type: object
+ description: PUT /participants/{ID} object
+ properties:
+ partyList:
+ type: array
+ items:
+ $ref: '#/definitions/PartyResult'
+ minItems: 1
+ maxItems: 10000
+ description: List of PartyResult elements that were either created or failed to be created.
+ currency:
+ type: string
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ required:
+ - partyList
+ PartyResult:
+ title: PartyResult
+ type: object
+ description: Data model for the complex type PartyResult.
+ properties:
+ partyId:
+ $ref: '#/definitions/PartyIdInfo'
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ required:
+ - partyId
PartyTypeIdInfo:
title: PartyTypeIdInfo
description: Data model for the complex type PartyIdInfo.
definitions:
description: A sub-identifier or sub-type for the Party.
type: string
required:
- - fspId
- - currency
+ - fspId
+ - currency
tags:
- - name: participants
- description: ''
+- name: participants
+ description: ''
+---
+showToc: false
+---
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
\ No newline at end of file
At of March 6th 2019, the active releases for core central services are as below
* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
+
+| Version | 4.0.0 | 5.3.0 | 5.4.0 | 5.0 |
+| --- | :---: | :---: | :---: | :---: |
+| Released | x | x | x | x |
+| QA Framework | x |
\ No newline at end of file
Use-cases that have been implemented over and above for Hub Operational use:
### 1.1 Account Lookup Service (ALS)
The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+#### 1.1.1 Assumptions
+
+* The ALS design will only cater for a single switch for the time being.
+* Support for multiple switches will utilise the same DNS resolution mechanism that is being developed for the Cross Border/Network design.
+
+#### 1.1.2 Routing
+
The routing configuration will be based on the following:
* PartyIdType - See section `7.5.6` of the Mojaloop Specification
-* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
-* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, however `isDefault` indicator must be set to `true` if the `Currency` is not provided.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+
### 1.2 ALS Oracle
The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+# DEL Participants
+
+Design for the deletion of a Participant by a DFSP.
+
+## Notes
+- Reference section 6.2.2.4 - Note: The ALS should verify that it is the Party’s current FSP that is deleting the FSP information. ~ This has been addressed in the design by insuring that the Party currently belongs to the FSPs requesting the deletion of the record. Any other validations are out of scope for the Switch and should be addressed at the schema level.
+
+## Sequence Diagram
+
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-del-participants-7.1.2.plantuml", relativeTo=file %}
+{% enduml %}
# GET Participants
+Design for the retrieval of a Participant by a DFSP.
+
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participants-7.1.0.plantuml", relativeTo=file %}
{% enduml %}
# GET Parties
+Design for the retrieval of a Party by a DFSP.
+
## Sequence Diagram
{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
# Sequence Diagram for POST Participants
+Design for the creation of a Participant by a DFSP.
+
## Notes
- Operation only supports requests which contain:
- All Participant's FSPs match the FSPIOP-Source
- - All Participant's TYPEs are the same
- All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+- Duplicate POST Requests with matching TYPE and optional CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.1.1.plantuml", relativeTo=file %}
{% enduml %}
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A10. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A9. User Lookup GET /parties/<idType>/<id>A9. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A11. User Lookup PUT /parties/<idType>/<id>A11. User Lookup <br>PUT /parties/<idType>/<id>A14. User Lookup PUT /parties/<idType>/<id>A14. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA8. Retrieve Participant End-point DataA8. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A12. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA6. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A13. Retrieve Participant End-point Data<font style="font-size: 13px">A13. Retrieve Participant End-point Data</font>
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.2. Delete Party Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+actor "Payee FSP" as PAYEE_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+'entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Parties\nFSP DAO" as ALS_PARTIES_FSP_DAO
+entity "ALS Participant Endpoint\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+participant ALS_PARTIES_FSP_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Financial Service Provider" #LightGrey
+participant PAYEE_FSP
+end box
+
+' START OF FLOW
+
+group Get Party Details
+ PAYER_FSP ->> ALS_API: Request to delete Participant details\DEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to delete Participant details
+
+ alt oracleEndpoint match found & parties information retrieved
+ activate ALS_PARTICIPANT_HANDLER
+ '********************* Retrieve Oracle Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
+ '********************* Retrieve Switch Routing Information - START ************************
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
+ '********************* Retrieve Switch Routing Information - END ************************
+
+ |||
+
+ '********************* Validate FSPIOP-Source Participant - START ************************
+ group Validate FSPIOP-Source Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request FSPIOP-Source participant information\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{FSPIOP-Source}\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return FSPIOP-Source participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return FSPIOP-Source participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate FSPIOP-Source participant\nError code: 320x
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId == FSPIOP-Source\nError code: 3100
+ end group
+ '********************* Validate Participant - END ************************
+
+ |||
+
+ '********************* Request Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information for PayerFSP\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ORACLE_API
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Request Participant Information from Oracle Sequence]]
+ |||
+ end ref
+
+ '********************* Request Oracle Participant Information - END ************************
+
+ |||
+
+ '********************* Validate Participant Ownership - START ************************
+ ' Reference section 6.2.2.4 - Note: The ALS should verify that it is the Party’s current FSP that is deleting the FSP information. Is this adequate?
+ group Validate Participant Ownership
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId matches Participant Information retrieved from Oracle.\nError code: 3100
+ end group
+ '********************* Validate Participant - END ************************
+
+ |||
+
+ '********************* Delete Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to delete Participant's FSP details DEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to delete Participant's FSP details DEL - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result
+ deactivate ORACLE_API
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Delete Oracle Participant Information - END ************************
+ |||
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return delete request result
+ ALS_API ->> PAYER_FSP: Callback indiciating success:\nPUT - /participants/{TYPE}/{ID}?currency={CURRENCY}
+
+ else Validation failure or Oracle was unable process delete request
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
@startuml
' declare title
-title 7.1.0. Get Party Details
+title 7.2.0. Get Party Details
autonumber
' Actor Keys:
group Get Party Details
'********************* Retrieve Oracle Routing Information - END ************************
|||
'********************* Retrieve Switch Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
- ref over ALS_PARTICIPANT_HANDLER, ALS_DB
- GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
- |||
- end ref
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
'********************* Retrieve Switch Routing Information - END ************************
|||
group Validate FSPIOP-Source Participant
group Get Party Details
'********************* Request Parties Information - END ************************
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- '********************* Get PayeeFSP Participant Information - START ************************
+ '********************* Get PayeeFSP Participant End-point Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant End-point Information - END ************************
ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.1. Post Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ loop for Participant in ParticipantList
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that PARTICIPANT.fspId == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map (ParticipantMap) based on {TYPE}
+
+ end loop
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ alt Validation passed and the ParticipantMap was created successfully
+
+ loop for keys in ParticipantMap -> TypeKey
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config based on TypeKey (and optional Currency)\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+' '********************* Fetch Oracle Routing Information - END ************************
+'
+' '********************* Retrieve Switch Routing Information - START ************************
+'
+' ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+' ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+' |||
+' GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+' |||
+' end ref
+'
+' '********************* Retrieve Switch Routing Information - END ************************
+' |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant's FSP
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant (PARTICIPANT.fspId) information for {TypeKey}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Store results in ParticipantResultMap[TypeKey]
+
+ end loop
+
+ loop for keys in ParticipantResultMap -> TypeKey
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Combine ParticipantResultMap[TypeKey] results into ParticipantResult
+ end loop
+
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP (FSPIOP-Source) Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information from ParticipantResult
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Validation failure and/or the ParticipantMap was not created successfully
+ '********************* Get PayerFSP Participant End-point Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP (FSPIOP-Source) Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant End-point Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
---
--- Table structure for table `centralSwitchEndpoint`
---
-
-DROP TABLE IF EXISTS `centralSwitchEndpoint`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `centralSwitchEndpoint` (
- `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(255) DEFAULT NULL,
- `description` varchar(512) DEFAULT NULL,
- `endpointTypeId` int(10) unsigned NOT NULL,
- `value` varchar(512) NOT NULL,
- `isDefault` tinyint(1) NOT NULL DEFAULT '0',
- `isActive` tinyint(1) NOT NULL DEFAULT '1',
- `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
- `createdBy` varchar(128) NOT NULL,
- PRIMARY KEY (`centralSwitchEndpointId`),
- KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
- CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `centralSwitchEndpoint`
---
-
-LOCK TABLES `centralSwitchEndpoint` WRITE;
-/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
-/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
-UNLOCK TABLES;
-
--
-- Table structure for table `currency`
--
CREATE TABLE `currency` (
LOCK TABLES `currency` WRITE;
/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
-INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-28 09:07:47'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-28 09:07:47'),('AFN','Afghanistan afghani',1,'2019-03-28 09:07:47'),('ALL','Albanian lek',1,'2019-03-28 09:07:47'),('AMD','Armenian dram',1,'2019-03-28 09:07:47'),('ANG','Netherlands Antillian guilder',1,'2019-03-28 09:07:47'),('AOA','Angolan kwanza',1,'2019-03-28 09:07:47'),('AOR','Angolan kwanza reajustado',1,'2019-03-28 09:07:47'),('ARS','Argentine peso',1,'2019-03-28 09:07:47'),('AUD','Australian dollar',1,'2019-03-28 09:07:47'),('AWG','Aruban guilder',1,'2019-03-28 09:07:47'),('AZN','Azerbaijanian new manat',1,'2019-03-28 09:07:47'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-28 09:07:47'),('BBD','Barbados dollar',1,'2019-03-28 09:07:47'),('BDT','Bangladeshi taka',1,'2019-03-28 09:07:47'),('BGN','Bulgarian lev',1,'2019-03-28 09:07:47'),('BHD','Bahraini dinar',1,'2019-03-28 09:07:47'),('BIF','Burundi franc',1,'2019-03-28 09:07:47'),('BMD','Bermudian dollar',1,'2019-03-28 09:07:47'),('BND','Brunei dollar',1,'2019-03-28 09:07:47'),('BOB','Bolivian boliviano',1,'2019-03-28 09:07:47'),('BRL','Brazilian real',1,'2019-03-28 09:07:47'),('BSD','Bahamian dollar',1,'2019-03-28 09:07:47'),('BTN','Bhutan ngultrum',1,'2019-03-28 09:07:47'),('BWP','Botswana pula',1,'2019-03-28 09:07:47'),('BYN','Belarusian ruble',1,'2019-03-28 09:07:47'),('BZD','Belize dollar',1,'2019-03-28 09:07:47'),('CAD','Canadian dollar',1,'2019-03-28 09:07:47'),('CDF','Congolese franc',1,'2019-03-28 09:07:47'),('CHF','Swiss franc',1,'2019-03-28 09:07:47'),('CLP','Chilean peso',1,'2019-03-28 09:07:47'),('CNY','Chinese yuan renminbi',1,'2019-03-28 09:07:47'),('COP','Colombian peso',1,'2019-03-28 09:07:47'),('CRC','Costa Rican colon',1,'2019-03-28 09:07:47'),('CUC','Cuban convertible peso',1,'2019-03-28 09:07:47'),('CUP','Cuban peso',1,'2019-03-28 09:07:47'),('CVE','Cape Verde escudo',1,'2019-03-28 09:07:47'),('CZK','Czech koruna',1,'2019-03-28 09:07:47'),('DJF','Djibouti franc',1,'2019-03-28 09:07:47'),('DKK','Danish krone',1,'2019-03-28 09:07:47'),('DOP','Dominican peso',1,'2019-03-28 09:07:47'),('DZD','Algerian dinar',1,'2019-03-28 09:07:47'),('EEK','Estonian kroon',1,'2019-03-28 09:07:47'),('EGP','Egyptian pound',1,'2019-03-28 09:07:47'),('ERN','Eritrean nakfa',1,'2019-03-28 09:07:47'),('ETB','Ethiopian birr',1,'2019-03-28 09:07:47'),('EUR','EU euro',1,'2019-03-28 09:07:47'),('FJD','Fiji dollar',1,'2019-03-28 09:07:47'),('FKP','Falkland Islands pound',1,'2019-03-28 09:07:47'),('GBP','British pound',1,'2019-03-28 09:07:47'),('GEL','Georgian lari',1,'2019-03-28 09:07:47'),('GGP','Guernsey pound',1,'2019-03-28 09:07:47'),('GHS','Ghanaian new cedi',1,'2019-03-28 09:07:47'),('GIP','Gibraltar pound',1,'2019-03-28 09:07:47'),('GMD','Gambian dalasi',1,'2019-03-28 09:07:47'),('GNF','Guinean franc',1,'2019-03-28 09:07:47'),('GTQ','Guatemalan quetzal',1,'2019-03-28 09:07:47'),('GYD','Guyana dollar',1,'2019-03-28 09:07:47'),('HKD','Hong Kong SAR dollar',1,'2019-03-28 09:07:47'),('HNL','Honduran lempira',1,'2019-03-28 09:07:47'),('HRK','Croatian kuna',1,'2019-03-28 09:07:47'),('HTG','Haitian gourde',1,'2019-03-28 09:07:47'),('HUF','Hungarian forint',1,'2019-03-28 09:07:47'),('IDR','Indonesian rupiah',1,'2019-03-28 09:07:47'),('ILS','Israeli new shekel',1,'2019-03-28 09:07:47'),('IMP','Isle of Man pound',1,'2019-03-28 09:07:47'),('INR','Indian rupee',1,'2019-03-28 09:07:47'),('IQD','Iraqi dinar',1,'2019-03-28 09:07:47'),('IRR','Iranian rial',1,'2019-03-28 09:07:47'),('ISK','Icelandic krona',1,'2019-03-28 09:07:47'),('JEP','Jersey pound',1,'2019-03-28 09:07:47'),('JMD','Jamaican dollar',1,'2019-03-28 09:07:47'),('JOD','Jordanian dinar',1,'2019-03-28 09:07:47'),('JPY','Japanese yen',1,'2019-03-28 09:07:47'),('KES','Kenyan shilling',1,'2019-03-28 09:07:47'),('KGS','Kyrgyz som',1,'2019-03-28 09:07:47'),('KHR','Cambodian riel',1,'2019-03-28 09:07:47'),('KMF','Comoros franc',1,'2019-03-28 09:07:47'),('KPW','North Korean won',1,'2019-03-28 09:07:47'),('KRW','South Korean won',1,'2019-03-28 09:07:47'),('KWD','Kuwaiti dinar',1,'2019-03-28 09:07:47'),('KYD','Cayman Islands dollar',1,'2019-03-28 09:07:47'),('KZT','Kazakh tenge',1,'2019-03-28 09:07:47'),('LAK','Lao kip',1,'2019-03-28 09:07:47'),('LBP','Lebanese pound',1,'2019-03-28 09:07:47'),('LKR','Sri Lanka rupee',1,'2019-03-28 09:07:47'),('LRD','Liberian dollar',1,'2019-03-28 09:07:47'),('LSL','Lesotho loti',1,'2019-03-28 09:07:47'),('LTL','Lithuanian litas',1,'2019-03-28 09:07:47'),('LVL','Latvian lats',1,'2019-03-28 09:07:47'),('LYD','Libyan dinar',1,'2019-03-28 09:07:47'),('MAD','Moroccan dirham',1,'2019-03-28 09:07:47'),('MDL','Moldovan leu',1,'2019-03-28 09:07:47'),('MGA','Malagasy ariary',1,'2019-03-28 09:07:47'),('MKD','Macedonian denar',1,'2019-03-28 09:07:47'),('MMK','Myanmar kyat',1,'2019-03-28 09:07:47'),('MNT','Mongolian tugrik',1,'2019-03-28 09:07:47'),('MOP','Macao SAR pataca',1,'2019-03-28 09:07:47'),('MRO','Mauritanian ouguiya',1,'2019-03-28 09:07:47'),('MUR','Mauritius rupee',1,'2019-03-28 09:07:47'),('MVR','Maldivian rufiyaa',1,'2019-03-28 09:07:47'),('MWK','Malawi kwacha',1,'2019-03-28 09:07:47'),('MXN','Mexican peso',1,'2019-03-28 09:07:47'),('MYR','Malaysian ringgit',1,'2019-03-28 09:07:47'),('MZN','Mozambique new metical',1,'2019-03-28 09:07:47'),('NAD','Namibian dollar',1,'2019-03-28 09:07:47'),('NGN','Nigerian naira',1,'2019-03-28 09:07:47'),('NIO','Nicaraguan cordoba oro',1,'2019-03-28 09:07:47'),('NOK','Norwegian krone',1,'2019-03-28 09:07:47'),('NPR','Nepalese rupee',1,'2019-03-28 09:07:47'),('NZD','New Zealand dollar',1,'2019-03-28 09:07:47'),('OMR','Omani rial',1,'2019-03-28 09:07:47'),('PAB','Panamanian balboa',1,'2019-03-28 09:07:47'),('PEN','Peruvian nuevo sol',1,'2019-03-28 09:07:47'),('PGK','Papua New Guinea kina',1,'2019-03-28 09:07:47'),('PHP','Philippine peso',1,'2019-03-28 09:07:47'),('PKR','Pakistani rupee',1,'2019-03-28 09:07:47'),('PLN','Polish zloty',1,'2019-03-28 09:07:47'),('PYG','Paraguayan guarani',1,'2019-03-28 09:07:47'),('QAR','Qatari rial',1,'2019-03-28 09:07:47'),('RON','Romanian new leu',1,'2019-03-28 09:07:47'),('RSD','Serbian dinar',1,'2019-03-28 09:07:47'),('RUB','Russian ruble',1,'2019-03-28 09:07:47'),('RWF','Rwandan franc',1,'2019-03-28 09:07:47'),('SAR','Saudi riyal',1,'2019-03-28 09:07:47'),('SBD','Solomon Islands dollar',1,'2019-03-28 09:07:47'),('SCR','Seychelles rupee',1,'2019-03-28 09:07:47'),('SDG','Sudanese pound',1,'2019-03-28 09:07:47'),('SEK','Swedish krona',1,'2019-03-28 09:07:47'),('SGD','Singapore dollar',1,'2019-03-28 09:07:47'),('SHP','Saint Helena pound',1,'2019-03-28 09:07:47'),('SLL','Sierra Leone leone',1,'2019-03-28 09:07:47'),('SOS','Somali shilling',1,'2019-03-28 09:07:47'),('SPL','Seborgan luigino',1,'2019-03-28 09:07:47'),('SRD','Suriname dollar',1,'2019-03-28 09:07:47'),('STD','Sao Tome and Principe dobra',1,'2019-03-28 09:07:47'),('SVC','El Salvador colon',1,'2019-03-28 09:07:47'),('SYP','Syrian pound',1,'2019-03-28 09:07:47'),('SZL','Swaziland lilangeni',1,'2019-03-28 09:07:47'),('THB','Thai baht',1,'2019-03-28 09:07:47'),('TJS','Tajik somoni',1,'2019-03-28 09:07:47'),('TMT','Turkmen new manat',1,'2019-03-28 09:07:47'),('TND','Tunisian dinar',1,'2019-03-28 09:07:47'),('TOP','Tongan pa\'anga',1,'2019-03-28 09:07:47'),('TRY','Turkish lira',1,'2019-03-28 09:07:47'),('TTD','Trinidad and Tobago dollar',1,'2019-03-28 09:07:47'),('TVD','Tuvaluan dollar',1,'2019-03-28 09:07:47'),('TWD','Taiwan New dollar',1,'2019-03-28 09:07:47'),('TZS','Tanzanian shilling',1,'2019-03-28 09:07:47'),('UAH','Ukrainian hryvnia',1,'2019-03-28 09:07:47'),('UGX','Uganda new shilling',1,'2019-03-28 09:07:47'),('USD','US dollar',1,'2019-03-28 09:07:47'),('UYU','Uruguayan peso uruguayo',1,'2019-03-28 09:07:47'),('UZS','Uzbekistani sum',1,'2019-03-28 09:07:47'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-28 09:07:47'),('VND','Vietnamese dong',1,'2019-03-28 09:07:47'),('VUV','Vanuatu vatu',1,'2019-03-28 09:07:47'),('WST','Samoan tala',1,'2019-03-28 09:07:47'),('XAF','CFA franc BEAC',1,'2019-03-28 09:07:47'),('XAG','Silver (ounce)',1,'2019-03-28 09:07:47'),('XAU','Gold (ounce)',1,'2019-03-28 09:07:47'),('XCD','East Caribbean dollar',1,'2019-03-28 09:07:47'),('XDR','IMF special drawing right',1,'2019-03-28 09:07:47'),('XFO','Gold franc',1,'2019-03-28 09:07:47'),('XFU','UIC franc',1,'2019-03-28 09:07:47'),('XOF','CFA franc BCEAO',1,'2019-03-28 09:07:47'),('XPD','Palladium (ounce)',1,'2019-03-28 09:07:47'),('XPF','CFP franc',1,'2019-03-28 09:07:47'),('XPT','Platinum (ounce)',1,'2019-03-28 09:07:47'),('YER','Yemeni rial',1,'2019-03-28 09:07:47'),('ZAR','South African rand',1,'2019-03-28 09:07:47'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-28 09:07:47'),('ZMW','Zambian kwacha',1,'2019-03-28 09:07:47'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-28 09:07:47'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-28 09:07:47'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-28 09:07:47'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `endpointType` (
LOCK TABLES `endpointType` WRITE;
/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
-INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `migration` (
`batch` int(11) DEFAULT NULL,
`migration_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
CREATE TABLE `migration` (
LOCK TABLES `migration` WRITE;
/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
-INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-28 11:07:46'),(2,'02_endpointType.js',1,'2019-03-28 11:07:46'),(3,'03_endpointType-indexes.js',1,'2019-03-28 11:07:46'),(4,'04_partyIdType.js',1,'2019-03-28 11:07:46'),(5,'05_partyIdType-indexes.js',1,'2019-03-28 11:07:46'),(6,'08_oracleEndpoint.js',1,'2019-03-28 11:07:47'),(7,'09_oracleEndpoint-indexes.js',1,'2019-03-28 11:07:47');
/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `oracleEndpoint` (
`oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partyIdTypeId` int(10) unsigned NOT NULL,
`endpointTypeId` int(10) unsigned NOT NULL,
- `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
`currencyId` varchar(255) DEFAULT NULL,
`value` varchar(512) NOT NULL,
`isDefault` tinyint(1) NOT NULL DEFAULT '0',
CREATE TABLE `oracleEndpoint` (
`createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` varchar(128) NOT NULL,
PRIMARY KEY (`oracleEndpointId`),
- KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
- CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
CREATE TABLE `partyIdType` (
LOCK TABLES `partyIdType` WRITE;
/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
-INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-28 09:07:47'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-28 09:07:47'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-28 09:07:47'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-28 09:07:47'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-28 09:07:47'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-28 09:07:47'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-28 09:07:47');
/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2019-03-18 17:52:06
+-- Dump completed on 2019-03-28 11:09:54
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
* [Helm](repositories/helm.md)
* [Project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
+* [Glossary of Terms](glossary.md)
* [Changelog](changelog.md)
+# Glossary of Terms
+
+| Term | Definition | Notes |
+| --- | --- | --- |
+| DFSP | Digital Financial Service Provider | |
+| FSP | Financial Service Provider | |
+| K8s | Short name for [Kubernetes](https://kubernetes.io/) | Read more here [https://kubernetes.io](https://kubernetes.io) |
+| ALS | [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md) | Refer to [Documentation](mojaloop-technical-overview/account-lookup-service/README.md) |
+| | | |
1. Install Calibre: https://calibre-ebook.com/download
-2. Run `npm run gitbook:export:pdf`
+2. npm install svgexport -g"
+
+3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
+
+4. npm install canvas
+
+5. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
A file `book.pdf` will be generated in the root directory
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
+- Export PDF does not contain a
## Docker
COPY . /opt/gitbook
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
-WORKDIR /opt/gitbook/repo
+RUN npm install
+#
+#RUN apk del build-dependencies
-RUN npm ci
+EXPOSE 8989
-RUN apk del build-dependencies
+RUN npm run gitbook:install
-EXPOSE 8989
+#RUN npm run gitbook:build
-CMD npm run docs:serve
+CMD npm run gitbook:serveNoReload
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
* [Contributors Guide](contributors-guide/README.md)
* [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
* [Current Version](contributors-guide/mojaloop-deployment/current-versions.md)
- * [Mojaloop Local Deployment](contributors-guide/mojaloop-local-deployment.md)
- * [Mojaloop Local Setup Linux](contributors-guide/mojaloop-local-setup-linux.md)
- * [Mojaloop Local Setup Mac](contributors-guide/mojaloop-local-setup-mac.md)
* [Standards](contributors-guide/standards/README.md)
* [Versioning](contributors-guide/standards/versioning.md)
* [Creating new Features](contributors-guide/standards/creating-new-features.md)
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
- * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
+ * [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
+ * [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
+ * [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
* [ALS Oracle](api/als-oracle-api-specification.md)
-# APIs Specifications
+# API Specifications
## Mojaloop API
-Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
-* [Mojaloop API Specification](./mojaloop-api-specification.md)
+Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+
+* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
## ALS Oracle API
-Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
+
+* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
-* [ALS Oracle API Specification](./mojaloop-api-specification.md)
-
\ No newline at end of file
+Notes:
+* ALS Oracle API is based on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
+ - Operations follow traditional REST API paradigms more strictly.
+ - Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
+ - `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+ - `GET /participants` response body returns a list of Participants, containing `currency`.
+ - `POST /participants` request body includes the `currency` as part of each record.
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
-
\ No newline at end of file
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
+## INSTRUCTIONS
+# Insert variables to be loaded into Gitbook
+# They can be referenced via {{ book.importedVars. }} the following example
+#
+# ```markdown
+# This is the value of my variable {{ book.importedVars. }}
+#
+#```
+#
+
+mojaloop:
+ spec:
+ version: v1.0
+ uri:
+ doc: https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf
+ api: https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml
+als:
+ oracle:
+ spec:
+ version: v1.0
+ uri:
+ doc: /mojaloop-technical-overview/account-lookup-service/README.md
+ api: https://github.com/mojaloop/documentation/blob/master/api/assets/interface-contracts/oracleServiceSwaggerv1.yaml
+# Changelog
-# 2019-03-08
-* Updated to use gitbook-cli
+[](https://github.com/mojaloop/documentation/releases)
+
+{% changelog %}
+ {% date %}
+ {% message %}
+ {% files %}
+ {% badge %}
+ {% filename link=true %}
+ {% changes truncate=true %}
+ {% endfiles %}
+{% endchangelog %}
We follow the [Standard style guidelines](https://github.com/feross/standard). A
For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
###
-
Instead of the word "project," use a specific noun such as component, microservi
* Step 1
* Step 2
* Step 2
-
Examples: _The U.S. State Department is in the United States._ _The foundation's
#### URL
Reference web addresses without the http:// as follows: _www.gatesfoundation.org_
-
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane \(i.e. Master Node\)
+* Control Plane (i.e. Master Node)
- \`\`\`http request
+ [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- \`\`\`
-
- * 3x Master Nodes for future node scaling and HA \(High Availability\)
+ * 3x Master Nodes for future node scaling and HA (High Availability)
* ETCd Plane:
- \`\`\`http request
-
[https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- \`\`\`
+ * 3x ETCd nodes for HA (High Availability)
- * 3x ETCd nodes for HA \(High Availability\)
-
-* Compute Plane \(i.e. Worker Node\):
+* Compute Plane (i.e. Worker Node):
TBC once load testing has been concluded. However the current general \*recommended size:
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
+
**Ubuntu** continue from here
or
8. Test system health in your browser after installation
- ml-api-adapter health test
-
- \`\`\`http request
+ - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
+ - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
- [http://ml-api-adapter/health](http://ml-api-adapter/health)
-
- ```text
- ___
- central-ledger health test
- ```http request
- http://central-ledger/health
- ```
### 2.2 Helm
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* \`central-ledger’s server IP address could not be found.
+* central-ledger’s server IP address could not be found.
- ERR\_NAME\_NOT\_RESOLVED\`
+ ERR_NAME_NOT_RESOLVED
Resolved by:
- * Verify that a helm chart\(s\) was installed by executing
+ * Verify that a helm chart(s) was installed by executing
```bash
helm list
```
If the helm charts are not listed, see the [Helm Chart Installation](./#221-helm-chart-installation) section to install a chart.
-
A new release for a repository is made when when a significant change such as a
At of March 6th 2019, the active releases for core central services are as below
-* helm: **v5.2.0**
-* central-ledger: v5.3.0
-* ml-api-adapter: v5.2.1
-* central-settlement: v5.2.0
-* central-event-processor: v5.3.0
-* email-notifier: v5.3.0
+* Helm: [](https://github.com/mojaloop/helm/releases)
+* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
+* Ml-API-Adapter: [](https://github.com/mojaloop/ml-api-adapter/releases)
+* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
+* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
+* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
We use a [standard developer code of conduct](https://www.contributor-covenant.o
### Licensing
See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
-
-##
-
Where `` can be one of the following:
### Merge into Mojaloop Repo
Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
-
The currrent version information for Mojaloop can be found [here](../mojaloop-de
1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
-
-###
-
Here we document the reasoning behind certain tools, technology and process choi
* **Services** - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it.
* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider \(DFSP\).
-
# Automated Testing
The page describes our automated testing philosophy along with the regression testing framework.
-
Limited to what the consuming teams need that isn't covered by existing unit, co
### End to End
End to end tests cover acceptance tests from scenarios.
-
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
As we develop the APIs, we will make consistent choices about non-functional req
7: [https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
8: _Semantic Versioning 2.0.0_, [http://semver.org/](http://semver.org/), retrieved August 18, 2016.
-
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
-
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
-
Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
-* Send money to anyone
-* Buy Goods
-* Bulk Payments
-* Tiers/Risk Level
-* Fraud Checks and Blacklists
-* Account Management
-* Check Account and POS
+* [Send money to anyone](#send-money-to-anyone)
+* [Buy goods](#buy-goods)
+* [Bulk Payments](#bulk-payments)
+* [Tier Risk Levels](#tier-risk-levels)
+* [Fraud Checks and Blacklists](#fraud-checks-and-blacklists)
+* [Account Management](#account-management)
+* [Check Account and POS](#check-account-and-pos)
### Scenario Descriptions
Hamim is working on his farm in Northern Uganda when he receives an urgent phone
Because Hamim has sent money to Kani before he has his information on his phone. Hamim sees Kani's name come up on his phone and he starts the transaction. He also sees the total fees and any exchange rates he has to pay before he sends the money. He is happy for that validation and that the transaction goes the same way every time. In under 30 seconds, Hamim is able to send the money to his Kani and verifies that he got it. Hamim is happy he was able to help out Kani and his family so quickly so they can buy food.
-#### Buy Goods - Pending Transactions
+#### Buy Goods
Venya is waiting in line to buy plantains at her local market. She is corralling her elder child with one hand and has her baby in a sling. She often comes to this seller and she knows he has a good price. She also knows that even though she carries no money and he is not on her financial network, she can buy from him. As she approaches the head of the line she juggles the children and pulls out a simple flip phone. She tells him 1.5 kilograms and he tells her the price, which she agrees to.
Nikisha is the accountant for one of the largest manufacturing companies in Joha
The bulk report for payments comes up by date range and, since Nikisha does this weekly, there are several items she needs to verify each time. Specifically, she looks for any errors or alerts for employees with invalid phone numbers, names not matching or other anomalies. Nikisha has the ability to follow-up with her co-workers or employees directly to fix these errors before sending out the payments. In addition, Nikisha is also notified of any employees who don't have an account setup. For these users, Nikisha is still able to push a payment through and the employee will be prompted by text message to open an account. Nikisha is thankful she has this process that makes it much easier to distribute funds. Once Nikisha has completed her validation, she sends it to her supervisor for final approval. Nikisha is glad to have this system in place because several years ago, Nikisha and her supervisor had to pay employees in cash and use a manual system to verify payments were received which made her feel very uneasy.
-#### Tiers/Risk Levels
+#### Tier Risk Levels
Salem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor, manage and reduce risk for the company. order to do so each new user ID in the system is assigned a default tier level which means they can only transfer a small number and amount of funds in and out of the system over specific periods of time. As users acquire greater balances in their accounts and hold their accounts for longer periods of time their tier levels improve. Tier levels are handled automatically by the system so Salem does not need to worry about assigning or changing these levels under normal circumstances. Part of Salem's job as an auditor is to review the daily reports to ensure that everyone's funds are safe and secure and he kicks off his daily report to review the accounts.
After Jahari has entered his pin on his phone he is able to see his account bala
```
The merchant gets confirmation that he received payment and he prints a receipt for Jahari. Since Jahari has his phone with him today he also re-checks his account balance again to confirm that appropriate funds were taken from his account. Jahari is happy that this is an easy process and he can see that he has plenty of money left to set aside this month for his family to use on education or health expenses.
-
The Level One Project Guide outlines a vision of how an inclusive digital financ
* Meeting or exceeding the convenience, cost and utility of cash
By utilizing an open, digital approach to transactions, and partnering with organizations across the public and private sectors, the Level One Project Guide aims to provide access to a robust, low-cost shared digital financial services infrastructure, sparking innovation from new and existing participants, reducing risk, and generating substantial value for providers, individuals and economies in developing markets. Additional resources have been created to help governments, NGOs and financial service providers successfully implement these changes.
-
Below is a list of larger initiatives and epics by area that will help to furthe
* Automate bulk import tests
* Forensic log test
* Account management test
-
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+# Account Lookup Service
+
+The Account Lookup Service **(ALS)** _(refer to section `6.2.1.2`)_ as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) implements the following use-cases:
+
+* Participant Look-up
+* Party Look-up
+* Manage Participants Registry information
+ * Adding Participant Registry information
+ * Deleting Participant Registry information
+
+Use-cases that have been implemented over and above for Hub Operational use:
+* Admin Operations
+ * Manage Oracle End-point Routing information
+ * Manage Switch End-point Routing information
+
+## 1. Design Considerations
+
+### 1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+
+The routing configuration will be based on the following:
+* PartyIdType - See section `7.5.6` of the Mojaloop Specification
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+
+### 1.2 ALS Oracle
+The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+
+## 2. Participant Lookup Design
+
+### 2.1 Architecture overview
+
+
+_Note: The Participant Lookup use-case similarly applies to for a Payee Initiated use-case such as transactionRequests. The difference being that the Payee is the initiation in the above diagram._
+
+### 2.2 Sequence diagram
+
+#### 2.2.1 GET Participant
+
+[Sequence Diagram for GET Participants](als-get-participants.md)
+
+#### 2.2.2 POST Participant
+
+[Sequence Diagram for POST Participants](als-post-participants.md)
+
+## 3. Party Lookup Design
+
+### 3.1 Architecture overview
+
+
+### 3.2 Sequence diagram
+
+#### 3.2.1 GET Parties
+
+[Sequence Diagram for GET Parties](als-get-parties.md)
+
+## 4. Database Design
+
+### 4.1 ALS Database Schema
+
+#### Notes
+- `partyIdType` - Values are currently seeded as per section _`7.5.6`_ [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}).
+- `currency` - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+- `endPointType` - Type identifier for the end-point (e.g. `URL`) which provides flexibility for future transport support.
+- `migration*` - Meta-data tables used by Knex Framework engine.
+- A `centralSwitchEndpoint` must be associated to the `OracleEndpoint` by the Admin API upon insertion of a new `OracleEndpoint` record. If the `centralSwitchEndpoint` is not provided as part of the API Request, then it must be defaulted.
+
+
+
+* [Acount Lookup Service DBeaver ERD](./assets/entities/AccountLookupDB-schema-DBeaver.erd)
+* [Acount Lookup Service MySQL Workbench Export](./assets/entities/AccountLookup-ddl-MySQLWorkbench.sql)
+
+## 5 ALS Oracle Design
+
+Detail design for the Oracle is out of scope for this document. The Oracle design and implementation is specific to each Oracle's requirements.
+
+### 5.1 API Specification
+
+Refer to **ALS Oracle API Specification** in the [API Specifications](../../api/README.md#als-oracle-api) section.
+# GET Participants
+
+## Sequence Diagram
+
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
+{% enduml %}
+# GET Parties
+
+## Sequence Diagram
+
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
+{% enduml %}
+# Sequence Diagram for POST Participants
+
+## Notes
+- Operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
+ - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+
+## Sequence Diagram
+
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
+{% enduml %}
/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep b/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.0. Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Endpoint Type\nConfig DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant Endpoint\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+
+
+ PAYER_FSP ->> ALS_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details
+
+ alt oracleEndpoint match found
+ group #lightskyblue IMPLEMENTATION: Get Oracle Routing Config Sequence [CACHED]
+ activate ALS_PARTICIPANT_HANDLER
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on\n{TYPE} and {CURRENCY} if provided\nError code: 200x
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: Retrieve oracleEndpoint\nError code: 200x
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ switchEndpoint
+ endpointType
+ partyIdType
+ currency (optional)
+ end note
+ ALS_DB --> ALS_TYPE_ENDPOINT_CONFIG_DAO: Return oracleEndpoint result set
+ deactivate ALS_DB
+ ALS_TYPE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of **oracleEndpoint** for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ opt #lightskyblue oracleEndpoint IS NULL
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Error code: 3200
+ end
+ end group
+
+ group #lightskyblue IMPLEMENTATION: Request Participant Information from Oracle Sequence
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information
+ deactivate ORACLE_API
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return list of Participant information
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+ end group
+
+ group #lightskyblue IMPLEMENTATION: Get Switch Routing Config Sequence [CACHED]
+ note right of ALS_PARTICIPANT_HANDLER #lightgray
+ **REFERENCE**: Get Oracle Routing Config Sequence: oracleEndpoint
+ end note
+ alt #lightskyblue oracleEndpoint IS NOT NULL
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Switch Routing information\nError code: 200x
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: Retrieve switchEndpoint\nError code: 200x
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ switchEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Return switchEndpoint result set
+ deactivate ALS_DB
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: Return **switchEndpoint**
+ else
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Error code: 2000
+ end alt
+ end group
+
+ '********************* Get PayerFSP Callback Endpoints - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_PUT
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}?currency={CURRENCY}
+ else oracleEndpoint IS NULL OR error occurred
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ else switchEndpoint IS NULL
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+ deactivate ALS_API
+
+ deactivate ALS_PARTICIPANT_HANDLER
+
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.1.0. Get Party Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+actor "Payee FSP" as PAYEE_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+'entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Parties\nFSP DAO" as ALS_PARTIES_FSP_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+participant ALS_PARTIES_FSP_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Financial Service Provider" #LightGrey
+participant PAYEE_FSP
+end box
+
+' START OF FLOW
+
+group Get Party Details
+ PAYER_FSP ->> ALS_API: Request to get parties's FSP details\nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details
+
+ alt oracleEndpoint match found & parties information retrieved
+ activate ALS_PARTICIPANT_HANDLER
+ '********************* Retrieve Oracle Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
+ '********************* Retrieve Switch Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+ group Validate FSPIOP-Source Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request FSPIOP-Source participant information\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{FSPIOP-Source}\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return FSPIOP-Source participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return FSPIOP-Source participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate FSPIOP-Source participant\nError code: 320x
+ end group
+ |||
+
+ '********************* Request Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information for PayeeFSP\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ORACLE_API
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Request Participant Information from Oracle Sequence]]
+ |||
+ end ref
+
+ '********************* Request Oracle Participant Information - END ************************
+ |||
+ '********************* Request Parties Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTIES_FSP_DAO: Request Parties information from FSP.\nError code: 200x
+
+ activate ALS_PARTIES_FSP_DAO
+ ALS_PARTIES_FSP_DAO ->> PAYEE_FSP: Parties Callback to Destination:\nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200x, 310x, 320x
+ deactivate ALS_PARTIES_FSP_DAO
+ activate PAYEE_FSP
+
+ PAYEE_FSP ->> ALS_API: Callback with Participant Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 300x, 310x, 320x
+ deactivate PAYEE_FSP
+
+ ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process Participant Callback Information for PUT
+
+ '********************* Request Parties Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
+ ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
+
+ else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
+
+ '********************* Get PayeeFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayeeFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayeeFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayeeFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declare title
+title 7.2.1. Post Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+' hnote over ALS_API #lightyellow
+' "POST /participant" operation only supports requests which contain:
+' - All Participant's FSPs match the FSPIOP-Source
+' - All Participant's TYPEs are the same
+' - All Participant's will be of the same Currency
+' end note
+ activate ALS_API
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ loop for keys in ParticipantMap -> TYPE
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+ '********************* Fetch Oracle Routing Information - END ************************
+
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ |||
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant
+ loop for Participant in ParticipantLis
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same\nError code: 3100
+
+ end loop
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of Endpoints
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Empty list of End-Points returned or Error occurred
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+ deactivate ALS_API
+
+ deactivate ALS_PARTICIPANT_HANDLER
+ end loop
+end
+@enduml
+-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64)
+--
+-- Host: 127.0.0.1 Database: account_lookup
+-- ------------------------------------------------------
+-- Server version 8.0.12
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `centralSwitchEndpoint`
+--
+
+DROP TABLE IF EXISTS `centralSwitchEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `centralSwitchEndpoint` (
+ `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`centralSwitchEndpointId`),
+ KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `centralSwitchEndpoint`
+--
+
+LOCK TABLES `centralSwitchEndpoint` WRITE;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `currency`
+--
+
+DROP TABLE IF EXISTS `currency`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `currency` (
+ `currencyId` varchar(3) NOT NULL,
+ `name` varchar(128) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`currencyId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `currency`
+--
+
+LOCK TABLES `currency` WRITE;
+/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `endpointType`
+--
+
+DROP TABLE IF EXISTS `endpointType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `endpointType` (
+ `endpointTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `type` varchar(50) NOT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`endpointTypeId`),
+ UNIQUE KEY `endpointtype_type_unique` (`type`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `endpointType`
+--
+
+LOCK TABLES `endpointType` WRITE;
+/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `migration`
+--
+
+DROP TABLE IF EXISTS `migration`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `batch` int(11) DEFAULT NULL,
+ `migration_time` timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration`
+--
+
+LOCK TABLES `migration` WRITE;
+/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
+/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `migration_lock`
+--
+
+DROP TABLE IF EXISTS `migration_lock`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration_lock` (
+ `index` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `is_locked` int(11) DEFAULT NULL,
+ PRIMARY KEY (`index`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration_lock`
+--
+
+LOCK TABLES `migration_lock` WRITE;
+/*!40000 ALTER TABLE `migration_lock` DISABLE KEYS */;
+INSERT INTO `migration_lock` VALUES (1,0);
+/*!40000 ALTER TABLE `migration_lock` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oracleEndpoint`
+--
+
+DROP TABLE IF EXISTS `oracleEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oracleEndpoint` (
+ `oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `partyIdTypeId` int(10) unsigned NOT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
+ `currencyId` varchar(255) DEFAULT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`oracleEndpointId`),
+ KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
+ KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
+ KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
+ KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
+ CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
+ CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
+ CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oracleEndpoint`
+--
+
+LOCK TABLES `oracleEndpoint` WRITE;
+/*!40000 ALTER TABLE `oracleEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oracleEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `partyIdType`
+--
+
+DROP TABLE IF EXISTS `partyIdType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `partyIdType` (
+ `partyIdTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL,
+ `description` varchar(512) NOT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`partyIdTypeId`),
+ UNIQUE KEY `partyidtype_name_unique` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `partyIdType`
+--
+
+LOCK TABLES `partyIdType` WRITE;
+/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2019-03-18 17:52:06
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/mojaloop-technical-overview/central-ledger/.gitkeep b/mojaloop-technical-overview/central-ledger/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-ledger/assets/.gitkeep b/mojaloop-technical-overview/central-ledger/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/.gitkeep b/mojaloop-technical-overview/central-settlements/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/assets/.gitkeep b/mojaloop-technical-overview/central-settlements/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
-
+
## Helm Hierarchy of Values
-
+
1. Install Calibre: https://calibre-ebook.com/download
-2. npm install svgexport -g"
-
-3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
-
-4. npm install canvas
-
-5. Run `npm run gitbook:export:pdf`
+2. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
A file `book.pdf` will be generated in the root directory
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
-- Export PDF does not contain a
## Docker
COPY . /opt/gitbook
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
-RUN npm install
-#
-#RUN apk del build-dependencies
+WORKDIR /opt/gitbook/repo
-EXPOSE 8989
+RUN npm ci
-RUN npm run gitbook:install
+RUN apk del build-dependencies
-#RUN npm run gitbook:build
+EXPOSE 8989
-CMD npm run gitbook:serveNoReload
+CMD npm run docs:serve
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
* [Contributors Guide](contributors-guide/README.md)
* [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
* [Current Version](contributors-guide/mojaloop-deployment/current-versions.md)
+ * [Mojaloop Local Deployment](contributors-guide/mojaloop-local-deployment.md)
+ * [Mojaloop Local Setup Linux](contributors-guide/mojaloop-local-setup-linux.md)
+ * [Mojaloop Local Setup Mac](contributors-guide/mojaloop-local-setup-mac.md)
* [Standards](contributors-guide/standards/README.md)
* [Versioning](contributors-guide/standards/versioning.md)
* [Creating new Features](contributors-guide/standards/creating-new-features.md)
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
- * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
- * [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
- * [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
- * [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
* [ALS Oracle](api/als-oracle-api-specification.md)
-# API Specifications
+# APIs Specifications
## Mojaloop API
-Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-
-* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
-* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
+Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
+* [Mojaloop API Specification](./mojaloop-api-specification.md)
## ALS Oracle API
-Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
-
-* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
-* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
-Notes:
-* ALS Oracle API is based on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
- - Operations follow traditional REST API paradigms more strictly.
- - Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
- - `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- - `GET /participants` response body returns a list of Participants, containing `currency`.
- - `POST /participants` request body includes the `currency` as part of each record.
+* [ALS Oracle API Specification](./mojaloop-api-specification.md)
+
\ No newline at end of file
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve the PUT end-point)A1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 8. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve both the POST and PUT end-points)A1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A7. User Lookup GET /parties/<idType>/<id>A7. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A9. User Lookup PUT /parties/<idType>/<id>A9. User Lookup <br>PUT /parties/<idType>/<id>A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0 Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Oracle Registry Store" as ORACLE_STORE
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Internal/External Oracle Data Store/Service" #LightGrey
+participant ORACLE_STORE
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP -> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_API
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details. \nError code: 3200
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
+ end alt
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ORACLE_API
+
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information. \nError code: 3200
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information. \nError code: 3200
+
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}?currency={CURRENCY}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occured
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 3200
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.0 Get Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+entity "Pathfinder Service" as PATHFINDER_SERVICE
+actor "GSMA Pathfinder" as PATHFINDER
+actor "Payee FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+box "Pathfinder Library" #LightBlue
+participant PATHFINDER_SERVICE
+end box
+
+participant PATHFINDER
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Get Party's Details
+ PAYER_FSP -> ALS: Request to get party's details \nGET - /parties/{Type}/{ID}
+ activate ALS
+ ALS -> PARTIES_HANDLER: Get Party by ID and Type \n(PartiesByTypeAndID)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Source Party's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Source Party Error Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Party Error Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Party Error Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> PATHFINDER_SERVICE: Query Party ID
+ activate PATHFINDER_SERVICE
+ PATHFINDER_SERVICE -> PATHFINDER: Query Party
+ activate PATHFINDER
+ PATHFINDER -> PATHFINDER_SERVICE: Return Mobile Country Code \nand Network Code
+ deactivate PATHFINDER
+ PATHFINDER_SERVICE -> PARTIES_HANDLER: Return MCC & MNC
+ deactivate PATHFINDER_SERVICE
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Participant Name\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Participant Name \n(getParticipantNameFromMccMnc)
+ activate DB
+ hnote over DB #lightyellow
+ participantMno
+ end note
+ DB --> PARTICIPANT_DAO: Return Participant Name
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Participant Name
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant with Updated Headers
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 202
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.1 Put Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "PAYER_FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+actor "Payee_FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Put Party's Details
+ PAYER_FSP -> ALS: Callback for the Get Party's request \nPUT - /parties/{Type}/{ID}
+ note right of PAYER_FSP #yellow
+ Message:
+ party: {
+ partyIdInfo: {
+ “partyIdType”: “PERSONAL_ID”,
+ “partyIdentifier”: “1551212”,
+ “partySubIdOrType”: “License”,
+ “fspId”: “1234”
+ },
+ merchantClassificationCode: 4321,
+ “name”: “Justin Trudeau”,
+ “personalInfo”: {
+ “complexName”: {
+ “firstName”: “Justin”,
+ “middleName”: “Pierre”,
+ “lastName”: “Trudeau”
+ },
+ “dateOfBirth”: “1971-12-25”
+ }
+ }
+ end note
+ activate ALS
+ ALS -> PARTIES_HANDLER: Put Party by ID and Type \n(PartiesByTypeAndID2)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 200
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
-# Changelog
-[](https://github.com/mojaloop/documentation/releases)
-
-{% changelog %}
- {% date %}
- {% message %}
- {% files %}
- {% badge %}
- {% filename link=true %}
- {% changes truncate=true %}
- {% endfiles %}
-{% endchangelog %}
+# 2019-03-08
+* Updated to use gitbook-cli
We follow the [Standard style guidelines](https://github.com/feross/standard). A
For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
###
+
Instead of the word "project," use a specific noun such as component, microservi
* Step 1
* Step 2
* Step 2
+
Examples: _The U.S. State Department is in the United States._ _The foundation's
#### URL
Reference web addresses without the http:// as follows: _www.gatesfoundation.org_
+
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane (i.e. Master Node)
+* Control Plane \(i.e. Master Node\)
- [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+ \`\`\`http request
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- * 3x Master Nodes for future node scaling and HA (High Availability)
+ \`\`\`
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
* ETCd Plane:
+ \`\`\`http request
+
[https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- * 3x ETCd nodes for HA (High Availability)
+ \`\`\`
-* Compute Plane (i.e. Worker Node):
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
TBC once load testing has been concluded. However the current general \*recommended size:
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
+
**Ubuntu** continue from here
or
8. Test system health in your browser after installation
- - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
- - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
+ ml-api-adapter health test
+
+ \`\`\`http request
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+
+ ```text
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
### 2.2 Helm
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* central-ledger’s server IP address could not be found.
+* \`central-ledger’s server IP address could not be found.
- ERR_NAME_NOT_RESOLVED
+ ERR\_NAME\_NOT\_RESOLVED\`
Resolved by:
- * Verify that a helm chart(s) was installed by executing
+ * Verify that a helm chart\(s\) was installed by executing
```bash
helm list
```
If the helm charts are not listed, see the [Helm Chart Installation](./#221-helm-chart-installation) section to install a chart.
+
A new release for a repository is made when when a significant change such as a
At of March 6th 2019, the active releases for core central services are as below
-* Helm: [](https://github.com/mojaloop/helm/releases)
-* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
-* Ml-API-Adapter: [](https://github.com/mojaloop/ml-api-adapter/releases)
-* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
-* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
-* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
+* helm: **v5.2.0**
+* central-ledger: v5.3.0
+* ml-api-adapter: v5.2.1
+* central-settlement: v5.2.0
+* central-event-processor: v5.3.0
+* email-notifier: v5.3.0
+# Mojaloop Deployment
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+## Deployment and Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+ * [Software List](mojaloop-local-deployment.md#1-software-list)
+ * [Deployment Recommendations](mojaloop-local-deployment.md#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](mojaloop-local-deployment.md#2-local-deployment-and-testing-tools)
+ * [MAC environment](mojaloop-local-deployment.md#21-mac-environment)
+ * [LINUX environment](mojaloop-local-deployment.md#21-linux-environment)
+ * [Kubernetes Dashboard](mojaloop-local-deployment.md#3-kubernetes-dashboard)
+ * [Helm](mojaloop-local-deployment.md#4-helm)
+ * [Helm configuration](mojaloop-local-deployment.md#41-helm-configuration)
+ * [Postman](mojaloop-local-deployment.md#5-postman)
+ * [Installing Postman](mojaloop-local-deployment.md#51-installing-postman)
+ * [Setup Postman](mojaloop-local-deployment.md#52-setup-postman)
+ * [Errors On Setup](mojaloop-local-deployment.md#6-errors-on-setup)
+
+## 1 Software List
+
+Before proceeding, please have a look at [Deployment Recommendations](mojaloop-local-deployment.md#11-deployment-recommendations) to insure the minimum resource requirements are available.
+
+
+### 1.1 Deployment Recommendations
+
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+**Resources Requirements:**
+
+* Control Plane \(i.e. Master Node\)
+ ```https request
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+ ```
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
+
+* ETCd Plane:
+ ```https request
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+ ```
+
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
+
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+### 2 Local Deployment and Testing Tools
+
+##### 2.1. MAC environment
+ For Mac, please follow the [Mojaloop Local Setup Mac](mojaloop-local-setup-mac.md) document.
+
+##### 2.1. LINUX environment
+ For Linux, please follow the [Mojaloop Local Setup Linux](mojaloop-local-setup-linux.md) document.
+
+#### 3 Kubernetes Dashboard:
+
+1 Install Kubernetes Dashboard roles, services & deployment.
+
+ **Note** Linux only - If you have installed MicroK8s, you only need to enable the dashboard before starting the proxy.
+ ```bash
+ microk8s.enable dashboard
+ ```
+ Remember to prefix all **kubectl** commands with **microk8s** if you opted not to create an alias.
+
+2. Alternative (not required if you have already enabled the dashboard) install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+3. Verify Kubernetes Dashboard;
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+
+4. Start proxy for local UI in new terminal;
+ ```bash
+ kubectl proxy ui
+ ```
+
+5. Open URI in default browser
+ ```bash
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+
+ Select **Token**. Generate a token to use there by:
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+ The token to use is shown on the last line of the output of that command.
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+### 4 Helm
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+#### 4.1 Helm configuration
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster;
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running;
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+
+3. Add mojaloop repo to your Helm config \(optional\). Linux use with sudo;
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts. Linux use with sudo;;
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+5. Update helm repositories. Linux use with sudo;
+ ```bash
+ helm repo update
+ ```
+
+6. Install nginx-ingress for load balancing & external access. Linux use with sudo;
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+7. Update your /ect/hosts;
+ ```bash
+ nano /etc/hosts
+ ```
+
+ add to below config;
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+8. Test system health in your browser after installation. This will only work if you have an active helm chart deployment running.
+ ml-api-adapter health test
+ ```https request
+ http://test-ml-api-adapter.mojaloop.live/health
+ ```
+
+ central-ledger health test
+ ```http request
+ http://test-central-ledger.mojaloop.live/health
+ ```
+
+### 5 Postman
+
+Postman is used to send requests and receive responses.
+
+#### 5.1 Installing Postman
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+#### 5.2 Setup Postman
+
+1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+2. Open **Postman**
+3. Click **Import** and then **Import File**
+4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
+5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+6. Click **Import** and then **Import File**
+7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+8. In the imported collection, navigate to the _central_ledger_ directory
+
+
+### 6 Errors On Setup
+
+* \`central-ledger’s server IP address could not be found.
+
+ ERR\_NAME\_NOT\_RESOLVED\`
+
+ Resolved by:
+
+ * Verify that a helm chart\(s\) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](mojaloop-local-deployment.md#221-helm-chart-installation) section to install a chart.
+# Mojaloop Setup for Ubuntu
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+Before proceeding, please insure you have reviewed [mojaloop-deployment](mojaloop-local-deployment.md).
+
+## Setup Introduction
+This document will provide guidelines to a technical capable resources to setup, deploy and configure the Mojaloop applications on a local environment, utilizing Docker, Kubernetes and HELM charts.
+
+* [Environment Setup](mojaloop-local-setup-linux.md#1-environment-setup)
+ * [Docker](mojaloop-local-setup-linux.md#1-docker)
+ * [Kubernetes](mojaloop-local-setup-linux.md#2-kubernetes)
+ * [MicroK8S](mojaloop-local-setup-linux.md#21-microk8s)
+* [Errors During Setup](mojaloop-local-setup-linux.md#3-errors-on-setup)
+* [Useful Tips](mojaloop-local-setup-linux.md#4-useful-tips)
+
+The tool set to be deployed as part of the deployment process. The below table is just a point of reference.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Installation Reference(s)
+ Tutorial Reference(s)
+
+
+
+
+ Docker
+ Required
+ Docker Engine and CLI Client.Local Kubernetes single node cluster.
+ https://docs.docker.com/install
+ Getting started with Docker
+
+
+ Kubectl
+ Required
+ Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.
+ https://kubernetes.io/docs/tasks/tools/install-kubectlDocker Kubernetes Install (as per this guide)$ sudo snap install kubectl --classic
+ Kubernetes Tutorials/
+
+
+ MicroK8s
+ Required
+ Kubernetes for workstations and appliances.A single package of k8s that installs on Linux.
+ https://microk8s.io/docs/$ snap install microk8s --classic
+ The Kubernetes tutorial, the MicroK8s website contains a short video clip under the Working with MicroK8s section that is worth looking at.
+
+
+ Kubectx
+ Optional(useful tool)
+ Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.
+ https://github.com/ahmetb/kubectx$ sudo apt install kubectx
+ Please refer to the github repositary for more information.https://github.com/ahmetb/kubectx
+
+
+ Kubetail
+ Optional(useful tool)
+ Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running $ kubectl logs -f but for multiple pods.Example usage$ kubetail moja.* -n demo
+ https://github.com/johanhaleby/kubetail
+ Please refer to the github repositary for more information.https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+ Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application.
+ https://docs.helm.sh/using_helm/#installing-helm$ sudo snap install helm --classic
+ Helm Documents
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.
+ https://www.getpostman.com/apps
+ Postman Learning Centre
+
+
+
+
+## 1 Environment Setup
+This environment setup was validated on:
+ * 64-bit version of Ubuntu Bionic 18.04(LTS).
+ * This guide is based on Ubuntu 18.04.2 (bionic) on a x86_64 desktop with 8 CPU's and 16GB RAM.
+
+### 1 Docker
+Dockerd is deployed as part of the MicroK8s installation. The docker daemon used by MicroK8s is listening on unix:///var/snap/microk8s/current/docker.sock. You can access it with the **microk8s.docker** command.
+
+### 2 Kubernetes
+This section will guide the reader through the deployment process to setup Kubernetes.
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 2.1 MicroK8S
+The quickest way to get started is to install directly from the snap store.
+
+Don't have the snap command? [Install snapd first](https://snapcraft.io/docs/core/install).
+
+1. Installing MicroK8s from snap:
+ ```bash
+ snap install microk8s --classic
+ ```
+
+2. Verify MicroK8s is installed and available:
+ ```bash
+ microk8s.status
+ ```
+
+3. During installation you can use the --wait-ready flag to wait for the kubernetes services to initialise:
+ ```bash
+ microk8s.status --wait -ready
+ ```
+
+4. To avoid colliding with a **kubectl** already installed and to avoid overwriting any existing Kubernetes configuration file, MicroK8s adds a **microk8s.kubectl** command, configured to exclusively access the new **MicroK8s** install.
+ ```bash
+ microk8s.kubectl get services
+ ```
+
+5. This step is only necessary if you require **microk8s.kubectl** to function as a standard **kubectl** command. This **DOES NOT** mean that you can then use **kubectl** to access **OTHER** k8s clusters.
+ An example of why you would use this: You have a bash script or 3rd party tool that expects **kubectl** to be available. E.g. If you want to use Helm, it will not work against **microk8s.kubectl**, thus one **MUST** setup the alias for Helm to function correctly.
+ ```bash
+ snap alias microk8s.kubectl kubectl
+ ```
+
+ Reverting it at any time:
+ ```bash
+ snap unalias kubectl
+ ```
+
+ We will stick with the standard command of prefixing with **microk8s.** for this guide.
+
+6. If you already have **kubectl** installed and would like to use it to access the **MicroK8s** deployment:
+ ```bash
+ microk8s.kubectl config view --raw > $HOME/.kube/config
+ ```
+
+7. This step is only necessary if you require **microk8s.docker** to function as a standard **docker** command. ;
+ ```bash
+ sudo snap alias microk8s.docker docker
+ ```
+
+ Undo the alias;
+ ```bash
+ sudo snap unalias docker
+ ```
+
+8. We will apply the native microK8s commands by prefix commands **microk8s.**:
+ ```bash
+ microk8s.docker ps
+ ```
+
+9. View the current context:
+ ```bash
+ microk8s.kubectl config get-contexts
+ ```
+
+10. Make sure the current context is **microk8s**. If not, set it as the current context:
+ ```bash
+ microk8s.kubectl config use-context microk8s
+ ```
+
+### 3 Errors On Setup
+Errors encountered and the solutions to be documented within this section.
+
+### 4 Useful Tips
+1. Resolve problems with VSCode and kafka on ubuntu 18.04. To make the code work with VSCode debugger, added the following into the launch.json
+ ```json
+ "env": {
+ "LD_LIBRARY_PATH": "${workspaceFolder}/node_modules/node-rdkafka/build/deps",
+ "WITH_SASL": 0
+ }
+ ```
+
\ No newline at end of file
+# Mojaloop local environment setup for Mac
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+Before proceeding, please insure you have reviewed [mojaloop-deployment](mojaloop-local-deployment.md).
+
+## Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+* [Local Deployment](mojaloop-local-setup-mac.md#local-deployment)
+ * [Kubernetes](mojaloop-local-setup-mac.md#1-kubernetes)
+ * [Kubernetes Installation with Docker](mojaloop-local-setup-mac.md#11-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](mojaloop-local-setup-mac.md#12-kubernetes-environment-setup)
+* [Errors During Setup](mojaloop-local-setup-mac.md#2-errors-on-setup)
+
+
+## Local Deployment
+
+The tool set to be deployed as part of the deployment process.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Installation Reference(s)
+ Tutorial Reference(s)
+
+
+
+
+ Docker
+ Required
+ Docker Engine and CLI Client.Local Kubernetes single node cluster.
+ https://docs.docker.com/install
+ https://docs.docker.com/get-started/
+
+
+ Kubectl
+ Required
+ Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.
+ https://kubernetes.io/docs/tasks/tools/install-kubectlDocker Kubernetes Install (as per this guide)$ brew install kubernetes-cli
+ https://kubernetes.io/docs/tutorials/
+
+
+ Kubectx
+ Optional(useful tool)
+ Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.
+ https://github.com/ahmetb/kubectx$ brew install kubectx
+ Please refer to the github repositary for more information.https://github.com/ahmetb/kubectx
+
+
+ Kubetail
+ Optional(useful tool)
+ Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running $ kubectl logs -f but for multiple pods.Example usage$ kubetail moja.* -n demo
+ https://github.com/johanhaleby/kubetail
+ Please refer to the github repositary for more information.https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+ Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application.
+ https://docs.helm.sh/using_helm/#installing-helm$ brew install kubernetes-helm
+ https://helm.sh/docs/
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.
+ https://www.getpostman.com/apps
+ Postman Learning Centre
+
+
+
+
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+### 1 Kubernetes
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 1.1 Kubernetes Installation with Docker
+
+* **kubectl** Complete set of installation instruction are available [here](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
+
+ ```bash
+ brew install kubernetes-cli
+ ```
+ To verify if the installation was successful, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+To install Kubernetes with Docker, follow the steps below;
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
+
+
+
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
+
+
+
+#### 1.2 Kubernetes environment setup:
+
+1. List the current Kubernetes context;
+ ```bash
+ kubectl config get-contexts
+ ```
+
+ **or**
+ ```bash
+ kubectx
+ ```
+2. Change your Contexts;
+ ```bash
+ kubectl config use-context docker-for-desktop
+ ```
+
+ **or**
+ ```bash
+ kubectx docker-for-desktop
+ ```
+
+### 2 Errors On Setup
+Errors encountered and the solutions to be documented within this section.
+# Standards
+
+## Standards for adopting an Open Source contribution into Mojaloop
+
+This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
+
+### Prerequisites
+
+1. The contribution should be in-line with the LevelOne Principles
+2. Basic guidelines regarding status of the contribution \(Code-base / Standards / Designs / Specifications\)
+3. Basic documentation to get started
+
+### Guidelines regarding adoption
+
+1. Create a private repo on the Mojaloop GitHub organization
+2. Have a sub-team of the DA take a look to make sure its portable \(to OSS\) - aligns with L1P principles, etc, and ensure design is in line with standards
+3. Check Licensing
+4. Assess Performance impact
+5. Create action items \(stories\) to update naming, remove/sanitize any items that are not generic
+6. Configuration for 'modes of operation'
+7. Enable CI/CD pipeline
+
+# Creating new Features
+
+## Fork
+
+Fork the Mojaloop repository into your own personal space. Ensure that you keep the `master` branch in sync.
+
+Refer to the following documentation for more information: [https://help.github.com/articles/fork-a-repo/](https://help.github.com/articles/fork-a-repo/)
+
+1. Clone repo using Git Fork button \(refer to the above documentation for more information\)
+2. Clone your forked repo: `git clone https://github.com//.git`
+3. Synchronise your forked repo with Mojaloop
+
+ Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
+
+ You should now see that you have two remotes:
+
+ ```bash
+ git remote -v
+ origin https://github.com//.git (fetch)
+ origin https://github.com//.git (push)
+ mojaloop https://github.com/mojaloop/.git (fetch)
+ mojaloop https://github.com/mojaloop/.git (push)
+ ```
+
+4. To sync to your current branch: `git pull mojaloop ` This will merge any changes from Mojaloop's repo into your forked repo.
+5. Push the changes back to your remote fork: `git push origin `
+
+## Creating a Branch
+
+Create a new branch from the `master` branch with the following format: `/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
+
+1. Create and checkout the branch: `git checkout -b /`
+2. Push the branch to your remote: `git push origin /`
+
+Where `` can be one of the following:
+
+| branchType | Description |
+| :--- | :--- |
+| feature | Any new or maintenance features that are in active development. |
+| hotfix | A hotfix branch is for any urgent fixes. |
+| release | A release branch containing a snapshot of a release. |
+| backup | A temporary backup branch. Used normally during repo maintenance. |
+
+## Merge into Mojaloop Repo
+
+Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
+
+# Versioning of releases made for core Switch services
+
+This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
+
+### [Versioning Strategy](standards.md#versioning-strategy)
+
+### [Current versions](standards.md#current-version)
+
+### [Notes](standards.md#notes)
+
+## Versioning Strategy
+
+1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
+2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
+3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
+
+## Notes
+
+1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
+2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+## Pull Request Process
+
+It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
+
+## Code of conduct
+
+We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
+
+## Licensing
+
+See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+
We use a [standard developer code of conduct](https://www.contributor-covenant.o
### Licensing
See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+##
+
Where `` can be one of the following:
### Merge into Mojaloop Repo
Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
+
The currrent version information for Mojaloop can be found [here](../mojaloop-de
1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+###
+
Here we document the reasoning behind certain tools, technology and process choi
* **Services** - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it.
* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider \(DFSP\).
+
# Automated Testing
The page describes our automated testing philosophy along with the regression testing framework.
+
Limited to what the consuming teams need that isn't covered by existing unit, co
### End to End
End to end tests cover acceptance tests from scenarios.
+
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
As we develop the APIs, we will make consistent choices about non-functional req
7: [https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
8: _Semantic Versioning 2.0.0_, [http://semver.org/](http://semver.org/), retrieved August 18, 2016.
+
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+
Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
-* [Send money to anyone](#send-money-to-anyone)
-* [Buy goods](#buy-goods)
-* [Bulk Payments](#bulk-payments)
-* [Tier Risk Levels](#tier-risk-levels)
-* [Fraud Checks and Blacklists](#fraud-checks-and-blacklists)
-* [Account Management](#account-management)
-* [Check Account and POS](#check-account-and-pos)
+* Send money to anyone
+* Buy Goods
+* Bulk Payments
+* Tiers/Risk Level
+* Fraud Checks and Blacklists
+* Account Management
+* Check Account and POS
### Scenario Descriptions
Hamim is working on his farm in Northern Uganda when he receives an urgent phone
Because Hamim has sent money to Kani before he has his information on his phone. Hamim sees Kani's name come up on his phone and he starts the transaction. He also sees the total fees and any exchange rates he has to pay before he sends the money. He is happy for that validation and that the transaction goes the same way every time. In under 30 seconds, Hamim is able to send the money to his Kani and verifies that he got it. Hamim is happy he was able to help out Kani and his family so quickly so they can buy food.
-#### Buy Goods
+#### Buy Goods - Pending Transactions
Venya is waiting in line to buy plantains at her local market. She is corralling her elder child with one hand and has her baby in a sling. She often comes to this seller and she knows he has a good price. She also knows that even though she carries no money and he is not on her financial network, she can buy from him. As she approaches the head of the line she juggles the children and pulls out a simple flip phone. She tells him 1.5 kilograms and he tells her the price, which she agrees to.
Nikisha is the accountant for one of the largest manufacturing companies in Joha
The bulk report for payments comes up by date range and, since Nikisha does this weekly, there are several items she needs to verify each time. Specifically, she looks for any errors or alerts for employees with invalid phone numbers, names not matching or other anomalies. Nikisha has the ability to follow-up with her co-workers or employees directly to fix these errors before sending out the payments. In addition, Nikisha is also notified of any employees who don't have an account setup. For these users, Nikisha is still able to push a payment through and the employee will be prompted by text message to open an account. Nikisha is thankful she has this process that makes it much easier to distribute funds. Once Nikisha has completed her validation, she sends it to her supervisor for final approval. Nikisha is glad to have this system in place because several years ago, Nikisha and her supervisor had to pay employees in cash and use a manual system to verify payments were received which made her feel very uneasy.
-#### Tier Risk Levels
+#### Tiers/Risk Levels
Salem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor, manage and reduce risk for the company. order to do so each new user ID in the system is assigned a default tier level which means they can only transfer a small number and amount of funds in and out of the system over specific periods of time. As users acquire greater balances in their accounts and hold their accounts for longer periods of time their tier levels improve. Tier levels are handled automatically by the system so Salem does not need to worry about assigning or changing these levels under normal circumstances. Part of Salem's job as an auditor is to review the daily reports to ensure that everyone's funds are safe and secure and he kicks off his daily report to review the accounts.
After Jahari has entered his pin on his phone he is able to see his account bala
```
The merchant gets confirmation that he received payment and he prints a receipt for Jahari. Since Jahari has his phone with him today he also re-checks his account balance again to confirm that appropriate funds were taken from his account. Jahari is happy that this is an easy process and he can see that he has plenty of money left to set aside this month for his family to use on education or health expenses.
+
The Level One Project Guide outlines a vision of how an inclusive digital financ
* Meeting or exceeding the convenience, cost and utility of cash
By utilizing an open, digital approach to transactions, and partnering with organizations across the public and private sectors, the Level One Project Guide aims to provide access to a robust, low-cost shared digital financial services infrastructure, sparking innovation from new and existing participants, reducing risk, and generating substantial value for providers, individuals and economies in developing markets. Additional resources have been created to help governments, NGOs and financial service providers successfully implement these changes.
+
Below is a list of larger initiatives and epics by area that will help to furthe
* Automate bulk import tests
* Forensic log test
* Account management test
+
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+# Central-Ledger Services
+
+The Account Lookup Service _(refer to section `6.2.1.2`)_ as per the [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) implements the following use-cases:
+
+* Participant Look-up
+* Party Look-up
+* Manage Participants Registry information
+ * Adding Participant Registry information
+ * Deleting Participant Registry information
+* Admin Operations
+ * Manage Oracle End-point Routing information
+
+## 1. Design Considerations
+
+### 1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+
+The routing configuration will be based on the following:
+* PartyIdType - See section `7.5.6` of the Mojaloop Specification
+* PartyIdentifier - See section `7.3.24` of the Mojaloop Specification
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+
+### 1.2 ALS Oracle Service/Adapter
+The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+
+* [ALS Oracle Service v1 Interface Contract](../assets//InterfaceContracts/OracleServiceSwaggerv1.yaml)
+
+## 2. Participant Lookup Design
+
+### 2.1 Architecture overview
+
+
+### 2.2 Sequence diagram
+
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
+
+## 3. Party Lookup Design
+
+### 3.1 Architecture overview
+
+
+### 3.2 Sequence diagram
+
+Work in progress..
+
+
+## 4. Database Design
+
+### 4.1 ALS Database Schema
+
+Work in progress..
+
+### 4.2 Oracle Database Schema
+
+This is optional & is dependant on the Oracle's requirements & design.
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
-
+
## Helm Hierarchy of Values
-
+
Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
-* [Send money to anyone](./#Send-money-to-anyone)
-* [Buy goods](./#Buy-Goods)
-* [Bulk Payments](./#Bulk-Payments)
-* [Tier Risk Levels](./#Tier-Risk-Levels)
-* [Fraud Checks and Blacklists](./#Fraud-Checks-and-Blacklists)
-* [Account Management](./#Account-Management)
-* [Check Account and POS](./#Check-Account-and-POS)
+* [Send money to anyone](#send-money-to-anyone)
+* [Buy goods](#buy-goods)
+* [Bulk Payments](#bulk-payments)
+* [Tier Risk Levels](#tier-risk-levels)
+* [Fraud Checks and Blacklists](#fraud-checks-and-blacklists)
+* [Account Management](#account-management)
+* [Check Account and POS](#check-account-and-pos)
### Scenario Descriptions
Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
-* [Send money to anyone](#send-money-to-anyone)
-* [Buy goods](#buy-goods)
-* [Bulk Payments](#bulk-payments)
-* [Tier Risk Levels](#tier-risk-levels)
-* [Fraud Checks and Blacklists](#fraud-checks-and-blacklists)
-* [Account Management](#account-management)
-* [Check Account and POS](#check-account-and-pos)
+* [Send money to anyone](./#Send-money-to-anyone)
+* [Buy goods](./#Buy-Goods)
+* [Bulk Payments](./#Bulk-Payments)
+* [Tier Risk Levels](./#Tier-Risk-Levels)
+* [Fraud Checks and Blacklists](./#Fraud-Checks-and-Blacklists)
+* [Account Management](./#Account-Management)
+* [Check Account and POS](./#Check-Account-and-POS)
### Scenario Descriptions
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
+{% enduml %}
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
+{% enduml %}
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
+{% enduml %}
Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
-* [Send money to anyone](#Send-money-to-anyone)
-* [Buy goods](#Buy-Goods)
-* [Bulk Payments](#Bulk-Payments)
-* [Tier Risk Levels](#Tier-Risk-Levels)
-* [Fraud Checks and Blacklists](#Fraud-Checks-and-Blacklists)
-* [Account Management](#Account-Management)
-* [Check Account and POS](#Check-Account-and-POS)
+* [Send money to anyone](#send-money-to-anyone)
+* [Buy goods](#buy-goods)
+* [Bulk Payments](#bulk-payments)
+* [Tier Risk Levels](#tier-risk-levels)
+* [Fraud Checks and Blacklists](#fraud-checks-and-blacklists)
+* [Account Management](#account-management)
+* [Check Account and POS](#check-account-and-pos)
### Scenario Descriptions
Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
-* [Send money to anyone](./#Send-money-to-anyone)
-* [Buy goods](./#Buy-Goods)
-* [Bulk Payments](./#Bulk-Payments)
-* [Tier Risk Levels](./#Tier-Risk-Levels)
-* [Fraud Checks and Blacklists](./#Fraud-Checks-and-Blacklists)
-* [Account Management](./#Account-Management)
-* [Check Account and POS](./#Check-Account-and-POS)
+* [Send money to anyone](#Send-money-to-anyone)
+* [Buy goods](#Buy-Goods)
+* [Bulk Payments](#Bulk-Payments)
+* [Tier Risk Levels](#Tier-Risk-Levels)
+* [Fraud Checks and Blacklists](#Fraud-Checks-and-Blacklists)
+* [Account Management](#Account-Management)
+* [Check Account and POS](#Check-Account-and-POS)
### Scenario Descriptions
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
-{% enduml %}
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
-{% enduml %}
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
+```
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
-{% enduml %}
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
+```
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
+{% enduml %}
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
+{% enduml %}
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
+{% enduml %}
Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
* [Send money to anyone](./#Send-money-to-anyone)
-* [Buy goods](./Buy-Goods)
-* [Bulk Payments](./Bulk-Payments)
-* [Tier Risk Levels](./Tier-Risk-Levels)
-* [Fraud Checks and Blacklists](./Fraud-Checks-and-Blacklists)
-* [Account Management](./Account-Management)
-* [Check Account and POS](./Check-Account-and-POS)
+* [Buy goods](./#Buy-Goods)
+* [Bulk Payments](./#Bulk-Payments)
+* [Tier Risk Levels](./#Tier-Risk-Levels)
+* [Fraud Checks and Blacklists](./#Fraud-Checks-and-Blacklists)
+* [Account Management](./#Account-Management)
+* [Check Account and POS](./#Check-Account-and-POS)
### Scenario Descriptions
Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
-* #### Send money to anyone
-* #### Buy Goods
-* #### Bulk Payments
-* #### Tiers Risk Level
-* #### Fraud Checks and Blacklists
-* #### Account Management
-* #### Check Account and POS
+* [Send money to anyone](./#Send-money-to-anyone)
+* [Buy goods](./Buy-Goods)
+* [Bulk Payments](./Bulk-Payments)
+* [Tier Risk Levels](./Tier-Risk-Levels)
+* [Fraud Checks and Blacklists](./Fraud-Checks-and-Blacklists)
+* [Account Management](./Account-Management)
+* [Check Account and POS](./Check-Account-and-POS)
### Scenario Descriptions
Nikisha is the accountant for one of the largest manufacturing companies in Joha
The bulk report for payments comes up by date range and, since Nikisha does this weekly, there are several items she needs to verify each time. Specifically, she looks for any errors or alerts for employees with invalid phone numbers, names not matching or other anomalies. Nikisha has the ability to follow-up with her co-workers or employees directly to fix these errors before sending out the payments. In addition, Nikisha is also notified of any employees who don't have an account setup. For these users, Nikisha is still able to push a payment through and the employee will be prompted by text message to open an account. Nikisha is thankful she has this process that makes it much easier to distribute funds. Once Nikisha has completed her validation, she sends it to her supervisor for final approval. Nikisha is glad to have this system in place because several years ago, Nikisha and her supervisor had to pay employees in cash and use a manual system to verify payments were received which made her feel very uneasy.
-#### Tiers Risk Levels
+#### Tier Risk Levels
Salem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor, manage and reduce risk for the company. order to do so each new user ID in the system is assigned a default tier level which means they can only transfer a small number and amount of funds in and out of the system over specific periods of time. As users acquire greater balances in their accounts and hold their accounts for longer periods of time their tier levels improve. Tier levels are handled automatically by the system so Salem does not need to worry about assigning or changing these levels under normal circumstances. Part of Salem's job as an auditor is to review the daily reports to ensure that everyone's funds are safe and secure and he kicks off his daily report to review the accounts.
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
-{% enduml %}
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
-{% enduml %}
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
+```
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
-{% enduml %}
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
+```
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
+{% enduml %}
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
+{% enduml %}
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
+{% enduml %}
Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
-* Send money to anyone
-* Buy Goods
-* Bulk Payments
-* Tiers/Risk Level
-* Fraud Checks and Blacklists
-* Account Management
-* Check Account and POS
+* #### Send money to anyone
+* #### Buy Goods
+* #### Bulk Payments
+* #### Tiers Risk Level
+* #### Fraud Checks and Blacklists
+* #### Account Management
+* #### Check Account and POS
### Scenario Descriptions
Hamim is working on his farm in Northern Uganda when he receives an urgent phone
Because Hamim has sent money to Kani before he has his information on his phone. Hamim sees Kani's name come up on his phone and he starts the transaction. He also sees the total fees and any exchange rates he has to pay before he sends the money. He is happy for that validation and that the transaction goes the same way every time. In under 30 seconds, Hamim is able to send the money to his Kani and verifies that he got it. Hamim is happy he was able to help out Kani and his family so quickly so they can buy food.
-#### Buy Goods - Pending Transactions
+#### Buy Goods
Venya is waiting in line to buy plantains at her local market. She is corralling her elder child with one hand and has her baby in a sling. She often comes to this seller and she knows he has a good price. She also knows that even though she carries no money and he is not on her financial network, she can buy from him. As she approaches the head of the line she juggles the children and pulls out a simple flip phone. She tells him 1.5 kilograms and he tells her the price, which she agrees to.
Nikisha is the accountant for one of the largest manufacturing companies in Joha
The bulk report for payments comes up by date range and, since Nikisha does this weekly, there are several items she needs to verify each time. Specifically, she looks for any errors or alerts for employees with invalid phone numbers, names not matching or other anomalies. Nikisha has the ability to follow-up with her co-workers or employees directly to fix these errors before sending out the payments. In addition, Nikisha is also notified of any employees who don't have an account setup. For these users, Nikisha is still able to push a payment through and the employee will be prompted by text message to open an account. Nikisha is thankful she has this process that makes it much easier to distribute funds. Once Nikisha has completed her validation, she sends it to her supervisor for final approval. Nikisha is glad to have this system in place because several years ago, Nikisha and her supervisor had to pay employees in cash and use a manual system to verify payments were received which made her feel very uneasy.
-#### Tiers/Risk Levels
+#### Tiers Risk Levels
Salem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor, manage and reduce risk for the company. order to do so each new user ID in the system is assigned a default tier level which means they can only transfer a small number and amount of funds in and out of the system over specific periods of time. As users acquire greater balances in their accounts and hold their accounts for longer periods of time their tier levels improve. Tier levels are handled automatically by the system so Salem does not need to worry about assigning or changing these levels under normal circumstances. Part of Salem's job as an auditor is to review the daily reports to ensure that everyone's funds are safe and secure and he kicks off his daily report to review the accounts.
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
-{% enduml %}
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
-{% enduml %}
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
+```
## Sequence Diagram
-{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
-{% enduml %}
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
+```
Switched plugins for PlantUML rendering to ensure that links work correctly when included in a gitbook page.
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml", relativeTo=file %}
+{% enduml %}
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml", relativeTo=file %}
+{% enduml %}
## Sequence Diagram
-```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
-```
+{% uml src="./assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml", relativeTo=file %}
+{% enduml %}
COPY . /opt/gitbook
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
-WORKDIR /opt/gitbook/repo
-
RUN npm install
#
#RUN apk del build-dependencies
EXPOSE 8989
RUN npm run gitbook:install
-RUN npm run gitbook:build
+#RUN npm run gitbook:build
CMD npm run gitbook:serveNoReload
EXPOSE 8989
RUN npm run gitbook:install
-#RUN npm run gitbook:build
+RUN npm run gitbook:build
-CMD npm run gitbook:serve
+CMD npm run gitbook:serveNoReload
disabled live-reload on the docker container and also removed gitbook build and serve does the same thing.
EXPOSE 8989
RUN npm run gitbook:install
-RUN npm run gitbook:build
+#RUN npm run gitbook:build
CMD npm run gitbook:serve
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
@startuml
-' declate title
+' declare title
title 7.1.0. Get Participant Details
autonumber
end box
' START OF FLOW
group Get Participant's FSP Details
+
+
PAYER_FSP ->> ALS_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
activate ALS_API
- ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details
@startuml
-' declate title
+' declare title
title 7.1.0. Get Party Details
autonumber
end box
' START OF FLOW
group Get Party Details
- PAYER_FSP ->> ALS_API: Request to get parties's FSP details\nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200zx, 300x, 310x, 320x
+ PAYER_FSP ->> ALS_API: Request to get parties's FSP details\nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200x, 300x, 310x, 320x
activate ALS_API
- ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
+
ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details
alt oracleEndpoint match found & parties information retrieved
@startuml
-' declate title
+' declare title
title 7.2.1. Post Participant Details
autonumber
group Post Participant's FSP Details
' - All Participant's will be of the same Currency
' end note
activate ALS_API
- ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+ note left ALS_API #lightgray
+ Validate request against
+ Mojaloop Interface Specification.
+ Error code: 300x, 310x
+ end note
ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
activate ALS_PARTICIPANT_HANDLER
1. Install Calibre: https://calibre-ebook.com/download
-2. Run `npm run gitbook:export:pdf`
+2. npm install svgexport -g"
+
+3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
+
+4. npm install canvas
+
+5. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
A file `book.pdf` will be generated in the root directory
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
+- Export PDF does not contain a
## Docker
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ pytho
WORKDIR /opt/gitbook/repo
-RUN npm ci
-
-RUN apk del build-dependencies
+RUN npm install
+#
+#RUN apk del build-dependencies
EXPOSE 8989
-CMD npm run docs:serve
+RUN npm run gitbook:install
+
+RUN npm run gitbook:build
+
+CMD npm run gitbook:serve
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
- * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
+ * [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
+ * [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
+ * [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
* [ALS Oracle](api/als-oracle-api-specification.md)
-# APIs Specifications
+# API Specifications
## Mojaloop API
-Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
-* [Mojaloop API Specification](./mojaloop-api-specification.md)
+Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+
+* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
## ALS Oracle API
-Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
+
+* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
-* [ALS Oracle API Specification](./mojaloop-api-specification.md)
-
\ No newline at end of file
+Notes:
+* ALS Oracle API is based on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
+ - Operations follow traditional REST API paradigms more strictly.
+ - Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
+ - `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+ - `GET /participants` response body returns a list of Participants, containing `currency`.
+ - `POST /participants` request body includes the `currency` as part of each record.
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
-
\ No newline at end of file
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
+## INSTRUCTIONS
+# Insert variables to be loaded into Gitbook
+# They can be referenced via {{ book.importedVars. }} the following example
+#
+# ```markdown
+# This is the value of my variable {{ book.importedVars. }}
+#
+#```
+#
+
+mojaloop:
+ spec:
+ version: v1.0
+ uri:
+ doc: https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf
+ api: https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml
+als:
+ oracle:
+ spec:
+ version: v1.0
+ uri:
+ doc: /mojaloop-technical-overview/account-lookup-service/README.md
+ api: https://github.com/mojaloop/documentation/blob/master/api/assets/interface-contracts/oracleServiceSwaggerv1.yaml
+# Changelog
-# 2019-03-08
-* Updated to use gitbook-cli
+[](https://github.com/mojaloop/documentation/releases)
+
+{% changelog %}
+ {% date %}
+ {% message %}
+ {% files %}
+ {% badge %}
+ {% filename link=true %}
+ {% changes truncate=true %}
+ {% endfiles %}
+{% endchangelog %}
We follow the [Standard style guidelines](https://github.com/feross/standard). A
For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
###
-
Instead of the word "project," use a specific noun such as component, microservi
* Step 1
* Step 2
* Step 2
-
Examples: _The U.S. State Department is in the United States._ _The foundation's
#### URL
Reference web addresses without the http:// as follows: _www.gatesfoundation.org_
-
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane \(i.e. Master Node\)
+* Control Plane (i.e. Master Node)
- \`\`\`http request
+ [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- \`\`\`
-
- * 3x Master Nodes for future node scaling and HA \(High Availability\)
+ * 3x Master Nodes for future node scaling and HA (High Availability)
* ETCd Plane:
- \`\`\`http request
-
[https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- \`\`\`
+ * 3x ETCd nodes for HA (High Availability)
- * 3x ETCd nodes for HA \(High Availability\)
-
-* Compute Plane \(i.e. Worker Node\):
+* Compute Plane (i.e. Worker Node):
TBC once load testing has been concluded. However the current general \*recommended size:
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
+
**Ubuntu** continue from here
or
8. Test system health in your browser after installation
- ml-api-adapter health test
-
- \`\`\`http request
+ - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
+ - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
- [http://ml-api-adapter/health](http://ml-api-adapter/health)
-
- ```text
- ___
- central-ledger health test
- ```http request
- http://central-ledger/health
- ```
### 2.2 Helm
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* \`central-ledger’s server IP address could not be found.
+* central-ledger’s server IP address could not be found.
- ERR\_NAME\_NOT\_RESOLVED\`
+ ERR_NAME_NOT_RESOLVED
Resolved by:
- * Verify that a helm chart\(s\) was installed by executing
+ * Verify that a helm chart(s) was installed by executing
```bash
helm list
```
If the helm charts are not listed, see the [Helm Chart Installation](./#221-helm-chart-installation) section to install a chart.
-
A new release for a repository is made when when a significant change such as a
At of March 6th 2019, the active releases for core central services are as below
-* helm: **v5.2.0**
-* central-ledger: v5.3.0
-* ml-api-adapter: v5.2.1
-* central-settlement: v5.2.0
-* central-event-processor: v5.3.0
-* email-notifier: v5.3.0
+* Helm: [](https://github.com/mojaloop/helm/releases)
+* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
+* Ml-API-Adapter: [](https://github.com/mojaloop/ml-api-adapter/releases)
+* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
+* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
+* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
We use a [standard developer code of conduct](https://www.contributor-covenant.o
### Licensing
See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
-
-##
-
Where `` can be one of the following:
### Merge into Mojaloop Repo
Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
-
The currrent version information for Mojaloop can be found [here](../mojaloop-de
1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
-
-###
-
Here we document the reasoning behind certain tools, technology and process choi
* **Services** - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it.
* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider \(DFSP\).
-
# Automated Testing
The page describes our automated testing philosophy along with the regression testing framework.
-
Limited to what the consuming teams need that isn't covered by existing unit, co
### End to End
End to end tests cover acceptance tests from scenarios.
-
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
As we develop the APIs, we will make consistent choices about non-functional req
7: [https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
8: _Semantic Versioning 2.0.0_, [http://semver.org/](http://semver.org/), retrieved August 18, 2016.
-
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
-
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
-
After Jahari has entered his pin on his phone he is able to see his account bala
```
The merchant gets confirmation that he received payment and he prints a receipt for Jahari. Since Jahari has his phone with him today he also re-checks his account balance again to confirm that appropriate funds were taken from his account. Jahari is happy that this is an easy process and he can see that he has plenty of money left to set aside this month for his family to use on education or health expenses.
-
The Level One Project Guide outlines a vision of how an inclusive digital financ
* Meeting or exceeding the convenience, cost and utility of cash
By utilizing an open, digital approach to transactions, and partnering with organizations across the public and private sectors, the Level One Project Guide aims to provide access to a robust, low-cost shared digital financial services infrastructure, sparking innovation from new and existing participants, reducing risk, and generating substantial value for providers, individuals and economies in developing markets. Additional resources have been created to help governments, NGOs and financial service providers successfully implement these changes.
-
Below is a list of larger initiatives and epics by area that will help to furthe
* Automate bulk import tests
* Forensic log test
* Account management test
-
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+# Account Lookup Service
+
+The Account Lookup Service **(ALS)** _(refer to section `6.2.1.2`)_ as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) implements the following use-cases:
+
+* Participant Look-up
+* Party Look-up
+* Manage Participants Registry information
+ * Adding Participant Registry information
+ * Deleting Participant Registry information
+
+Use-cases that have been implemented over and above for Hub Operational use:
+* Admin Operations
+ * Manage Oracle End-point Routing information
+ * Manage Switch End-point Routing information
+
+## 1. Design Considerations
+
+### 1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+
+The routing configuration will be based on the following:
+* PartyIdType - See section `7.5.6` of the Mojaloop Specification
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+
+### 1.2 ALS Oracle
+The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+
+## 2. Participant Lookup Design
+
+### 2.1 Architecture overview
+
+
+_Note: The Participant Lookup use-case similarly applies to for a Payee Initiated use-case such as transactionRequests. The difference being that the Payee is the initiation in the above diagram._
+
+### 2.2 Sequence diagram
+
+#### 2.2.1 GET Participant
+
+[Sequence Diagram for GET Participants](als-get-participants.md)
+
+#### 2.2.2 POST Participant
+
+[Sequence Diagram for POST Participants](als-post-participants.md)
+
+## 3. Party Lookup Design
+
+### 3.1 Architecture overview
+
+
+### 3.2 Sequence diagram
+
+#### 3.2.1 GET Parties
+
+[Sequence Diagram for GET Parties](als-get-parties.md)
+
+## 4. Database Design
+
+### 4.1 ALS Database Schema
+
+#### Notes
+- `partyIdType` - Values are currently seeded as per section _`7.5.6`_ [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}).
+- `currency` - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+- `endPointType` - Type identifier for the end-point (e.g. `URL`) which provides flexibility for future transport support.
+- `migration*` - Meta-data tables used by Knex Framework engine.
+- A `centralSwitchEndpoint` must be associated to the `OracleEndpoint` by the Admin API upon insertion of a new `OracleEndpoint` record. If the `centralSwitchEndpoint` is not provided as part of the API Request, then it must be defaulted.
+
+
+
+* [Acount Lookup Service DBeaver ERD](./assets/entities/AccountLookupDB-schema-DBeaver.erd)
+* [Acount Lookup Service MySQL Workbench Export](./assets/entities/AccountLookup-ddl-MySQLWorkbench.sql)
+
+## 5 ALS Oracle Design
+
+Detail design for the Oracle is out of scope for this document. The Oracle design and implementation is specific to each Oracle's requirements.
+
+### 5.1 API Specification
+
+Refer to **ALS Oracle API Specification** in the [API Specifications](../../api/README.md#als-oracle-api) section.
+# GET Participants
+
+## Sequence Diagram
+
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
+# GET Parties
+
+## Sequence Diagram
+
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
+```
+# Sequence Diagram for POST Participants
+
+## Notes
+- Operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
+ - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+
+## Sequence Diagram
+
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
+```
/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep b/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0. Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Endpoint Type\nConfig DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant Endpoint\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP ->> ALS_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details
+
+ alt oracleEndpoint match found
+ group #lightskyblue IMPLEMENTATION: Get Oracle Routing Config Sequence [CACHED]
+ activate ALS_PARTICIPANT_HANDLER
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on\n{TYPE} and {CURRENCY} if provided\nError code: 200x
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: Retrieve oracleEndpoint\nError code: 200x
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ switchEndpoint
+ endpointType
+ partyIdType
+ currency (optional)
+ end note
+ ALS_DB --> ALS_TYPE_ENDPOINT_CONFIG_DAO: Return oracleEndpoint result set
+ deactivate ALS_DB
+ ALS_TYPE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of **oracleEndpoint** for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ opt #lightskyblue oracleEndpoint IS NULL
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Error code: 3200
+ end
+ end group
+
+ group #lightskyblue IMPLEMENTATION: Request Participant Information from Oracle Sequence
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information
+ deactivate ORACLE_API
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return list of Participant information
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+ end group
+
+ group #lightskyblue IMPLEMENTATION: Get Switch Routing Config Sequence [CACHED]
+ note right of ALS_PARTICIPANT_HANDLER #lightgray
+ **REFERENCE**: Get Oracle Routing Config Sequence: oracleEndpoint
+ end note
+ alt #lightskyblue oracleEndpoint IS NOT NULL
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Switch Routing information\nError code: 200x
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: Retrieve switchEndpoint\nError code: 200x
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ switchEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Return switchEndpoint result set
+ deactivate ALS_DB
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: Return **switchEndpoint**
+ else
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Error code: 2000
+ end alt
+ end group
+
+ '********************* Get PayerFSP Callback Endpoints - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_PUT
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}?currency={CURRENCY}
+ else oracleEndpoint IS NULL OR error occurred
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ else switchEndpoint IS NULL
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+ deactivate ALS_API
+
+ deactivate ALS_PARTICIPANT_HANDLER
+
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0. Get Party Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+actor "Payee FSP" as PAYEE_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+'entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Parties\nFSP DAO" as ALS_PARTIES_FSP_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+participant ALS_PARTIES_FSP_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Financial Service Provider" #LightGrey
+participant PAYEE_FSP
+end box
+
+' START OF FLOW
+
+group Get Party Details
+ PAYER_FSP ->> ALS_API: Request to get parties's FSP details\nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200zx, 300x, 310x, 320x
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details
+
+ alt oracleEndpoint match found & parties information retrieved
+ activate ALS_PARTICIPANT_HANDLER
+ '********************* Retrieve Oracle Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
+ '********************* Retrieve Switch Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+ group Validate FSPIOP-Source Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request FSPIOP-Source participant information\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{FSPIOP-Source}\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return FSPIOP-Source participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return FSPIOP-Source participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate FSPIOP-Source participant\nError code: 320x
+ end group
+ |||
+
+ '********************* Request Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information for PayeeFSP\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ORACLE_API
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Request Participant Information from Oracle Sequence]]
+ |||
+ end ref
+
+ '********************* Request Oracle Participant Information - END ************************
+ |||
+ '********************* Request Parties Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTIES_FSP_DAO: Request Parties information from FSP.\nError code: 200x
+
+ activate ALS_PARTIES_FSP_DAO
+ ALS_PARTIES_FSP_DAO ->> PAYEE_FSP: Parties Callback to Destination:\nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200x, 310x, 320x
+ deactivate ALS_PARTIES_FSP_DAO
+ activate PAYEE_FSP
+
+ PAYEE_FSP ->> ALS_API: Callback with Participant Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 300x, 310x, 320x
+ deactivate PAYEE_FSP
+
+ ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process Participant Callback Information for PUT
+
+ '********************* Request Parties Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
+ ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
+
+ else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
+
+ '********************* Get PayeeFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayeeFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayeeFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayeeFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.1. Post Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+' hnote over ALS_API #lightyellow
+' "POST /participant" operation only supports requests which contain:
+' - All Participant's FSPs match the FSPIOP-Source
+' - All Participant's TYPEs are the same
+' - All Participant's will be of the same Currency
+' end note
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ loop for keys in ParticipantMap -> TYPE
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+ '********************* Fetch Oracle Routing Information - END ************************
+
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ |||
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant
+ loop for Participant in ParticipantLis
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same\nError code: 3100
+
+ end loop
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of Endpoints
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Empty list of End-Points returned or Error occurred
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+ deactivate ALS_API
+
+ deactivate ALS_PARTICIPANT_HANDLER
+ end loop
+end
+@enduml
+-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64)
+--
+-- Host: 127.0.0.1 Database: account_lookup
+-- ------------------------------------------------------
+-- Server version 8.0.12
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `centralSwitchEndpoint`
+--
+
+DROP TABLE IF EXISTS `centralSwitchEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `centralSwitchEndpoint` (
+ `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`centralSwitchEndpointId`),
+ KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `centralSwitchEndpoint`
+--
+
+LOCK TABLES `centralSwitchEndpoint` WRITE;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `currency`
+--
+
+DROP TABLE IF EXISTS `currency`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `currency` (
+ `currencyId` varchar(3) NOT NULL,
+ `name` varchar(128) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`currencyId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `currency`
+--
+
+LOCK TABLES `currency` WRITE;
+/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `endpointType`
+--
+
+DROP TABLE IF EXISTS `endpointType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `endpointType` (
+ `endpointTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `type` varchar(50) NOT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`endpointTypeId`),
+ UNIQUE KEY `endpointtype_type_unique` (`type`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `endpointType`
+--
+
+LOCK TABLES `endpointType` WRITE;
+/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `migration`
+--
+
+DROP TABLE IF EXISTS `migration`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `batch` int(11) DEFAULT NULL,
+ `migration_time` timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration`
+--
+
+LOCK TABLES `migration` WRITE;
+/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
+/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `migration_lock`
+--
+
+DROP TABLE IF EXISTS `migration_lock`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration_lock` (
+ `index` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `is_locked` int(11) DEFAULT NULL,
+ PRIMARY KEY (`index`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration_lock`
+--
+
+LOCK TABLES `migration_lock` WRITE;
+/*!40000 ALTER TABLE `migration_lock` DISABLE KEYS */;
+INSERT INTO `migration_lock` VALUES (1,0);
+/*!40000 ALTER TABLE `migration_lock` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oracleEndpoint`
+--
+
+DROP TABLE IF EXISTS `oracleEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oracleEndpoint` (
+ `oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `partyIdTypeId` int(10) unsigned NOT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
+ `currencyId` varchar(255) DEFAULT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`oracleEndpointId`),
+ KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
+ KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
+ KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
+ KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
+ CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
+ CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
+ CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oracleEndpoint`
+--
+
+LOCK TABLES `oracleEndpoint` WRITE;
+/*!40000 ALTER TABLE `oracleEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oracleEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `partyIdType`
+--
+
+DROP TABLE IF EXISTS `partyIdType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `partyIdType` (
+ `partyIdTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL,
+ `description` varchar(512) NOT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`partyIdTypeId`),
+ UNIQUE KEY `partyidtype_name_unique` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `partyIdType`
+--
+
+LOCK TABLES `partyIdType` WRITE;
+/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2019-03-18 17:52:06
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/mojaloop-technical-overview/central-ledger/.gitkeep b/mojaloop-technical-overview/central-ledger/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-ledger/assets/.gitkeep b/mojaloop-technical-overview/central-ledger/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/.gitkeep b/mojaloop-technical-overview/central-settlements/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/assets/.gitkeep b/mojaloop-technical-overview/central-settlements/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
-
+
## Helm Hierarchy of Values
-
+
1. Install Calibre: https://calibre-ebook.com/download
-2. npm install svgexport -g"
-
-3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
-
-4. npm install canvas
-
-5. Run `npm run gitbook:export:pdf`
+2. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
A file `book.pdf` will be generated in the root directory
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
-- Export PDF does not contain a
## Docker
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ pytho
WORKDIR /opt/gitbook/repo
-RUN npm install
-#
-#RUN apk del build-dependencies
+RUN npm ci
-EXPOSE 8989
-
-RUN npm run gitbook:install
+RUN apk del build-dependencies
-RUN npm run gitbook:build
+EXPOSE 8989
-CMD npm run gitbook:serve
+CMD npm run docs:serve
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
- * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
- * [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
- * [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
- * [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
* [ALS Oracle](api/als-oracle-api-specification.md)
-# API Specifications
+# APIs Specifications
## Mojaloop API
-Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-
-* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
-* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
+Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
+* [Mojaloop API Specification](./mojaloop-api-specification.md)
## ALS Oracle API
-Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
-
-* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
-* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
-Notes:
-* ALS Oracle API is based on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
- - Operations follow traditional REST API paradigms more strictly.
- - Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
- - `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- - `GET /participants` response body returns a list of Participants, containing `currency`.
- - `POST /participants` request body includes the `currency` as part of each record.
+* [ALS Oracle API Specification](./mojaloop-api-specification.md)
+
\ No newline at end of file
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve the PUT end-point)A1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 8. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve both the POST and PUT end-points)A1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A7. User Lookup GET /parties/<idType>/<id>A7. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A9. User Lookup PUT /parties/<idType>/<id>A9. User Lookup <br>PUT /parties/<idType>/<id>A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0 Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Oracle Registry Store" as ORACLE_STORE
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Internal/External Oracle Data Store/Service" #LightGrey
+participant ORACLE_STORE
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP -> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_API
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details. \nError code: 3200
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
+ end alt
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ORACLE_API
+
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information. \nError code: 3200
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information. \nError code: 3200
+
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}?currency={CURRENCY}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occured
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 3200
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.0 Get Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+entity "Pathfinder Service" as PATHFINDER_SERVICE
+actor "GSMA Pathfinder" as PATHFINDER
+actor "Payee FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+box "Pathfinder Library" #LightBlue
+participant PATHFINDER_SERVICE
+end box
+
+participant PATHFINDER
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Get Party's Details
+ PAYER_FSP -> ALS: Request to get party's details \nGET - /parties/{Type}/{ID}
+ activate ALS
+ ALS -> PARTIES_HANDLER: Get Party by ID and Type \n(PartiesByTypeAndID)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Source Party's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Source Party Error Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Party Error Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Party Error Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> PATHFINDER_SERVICE: Query Party ID
+ activate PATHFINDER_SERVICE
+ PATHFINDER_SERVICE -> PATHFINDER: Query Party
+ activate PATHFINDER
+ PATHFINDER -> PATHFINDER_SERVICE: Return Mobile Country Code \nand Network Code
+ deactivate PATHFINDER
+ PATHFINDER_SERVICE -> PARTIES_HANDLER: Return MCC & MNC
+ deactivate PATHFINDER_SERVICE
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Participant Name\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Participant Name \n(getParticipantNameFromMccMnc)
+ activate DB
+ hnote over DB #lightyellow
+ participantMno
+ end note
+ DB --> PARTICIPANT_DAO: Return Participant Name
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Participant Name
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant with Updated Headers
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 202
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.1 Put Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "PAYER_FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+actor "Payee_FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Put Party's Details
+ PAYER_FSP -> ALS: Callback for the Get Party's request \nPUT - /parties/{Type}/{ID}
+ note right of PAYER_FSP #yellow
+ Message:
+ party: {
+ partyIdInfo: {
+ “partyIdType”: “PERSONAL_ID”,
+ “partyIdentifier”: “1551212”,
+ “partySubIdOrType”: “License”,
+ “fspId”: “1234”
+ },
+ merchantClassificationCode: 4321,
+ “name”: “Justin Trudeau”,
+ “personalInfo”: {
+ “complexName”: {
+ “firstName”: “Justin”,
+ “middleName”: “Pierre”,
+ “lastName”: “Trudeau”
+ },
+ “dateOfBirth”: “1971-12-25”
+ }
+ }
+ end note
+ activate ALS
+ ALS -> PARTIES_HANDLER: Put Party by ID and Type \n(PartiesByTypeAndID2)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 200
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
-# Changelog
-[](https://github.com/mojaloop/documentation/releases)
-
-{% changelog %}
- {% date %}
- {% message %}
- {% files %}
- {% badge %}
- {% filename link=true %}
- {% changes truncate=true %}
- {% endfiles %}
-{% endchangelog %}
+# 2019-03-08
+* Updated to use gitbook-cli
+# Mojaloop Setup for Ubuntu
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+Before proceeding, please insure you have reviewed [mojaloop-deployment](./mojaloop-deployment.md).
+
+## Setup Introduction
+This document will provide guidelines to a technical capable resources to setup, deploy and configure the Mojaloop applications on a local environment, utilizing Docker, Kubernetes and HELM charts.
+
+* [Environment Setup](environment-setup-linux.md#1-environment-setup)
+ * [Docker](environment-setup-linux.md#1-docker)
+ * [Kubernetes](environment-setup-linux.md#2-kubernetes)
+ * [MicroK8S](environment-setup-linux.md#21-microk8s)
+ * [Kubernetes Dashboard](environment-setup-linux.md#22-kubernetes-dashboard)
+ * [Helm](environment-setup-linux.md#3-helm)
+ * [Helm CLI and Tiller](environment-setup-linux.md#31-helm-cli-and-tiller)
+ *[Incubator](environment-setup-linux.md#32-incubator)
+ *[Nginx-ingress](environment-setup-linux.md#33-nginx-ingress)
+ *[Helm Configuration](environment-setup-linux.md#34-helm-configuration)
+ *[Helm Chart Installation](environment-setup-linux.md#35-helm-chart-installation)
+ * [Postman](environment-setup-linux.md#4-postman)
+ * [Installing Postman](environment-setup-linux.md#41-installing-postman)
+ * [Setup Postman](environment-setup-linux.md#42-setup-postman)
+* [Errors During Setup](environment-setup-linux.md#5-errors-on-setup)
+* [Useful Tips](environment-setup-linux.md#6-useful-tips)
+
+The tool set to be deployed as part of the deployment process. The below table is just a point of reference.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Installation Reference(s)
+ Tutorial Reference(s)
+
+
+
+
+ Docker
+ Required
+ Docker Engine and CLI Client.Local Kubernetes single node cluster.
+ https://docs.docker.com/install
+ Getting started with Docker
+
+
+ Kubectl
+ Required
+ Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.
+ https://kubernetes.io/docs/tasks/tools/install-kubectlDocker Kubernetes Install (as per this guide)$ sudo snap install kubectl --classic
+ Kubernetes Tutorials/
+
+
+ MicroK8s
+ Required
+ Kubernetes for workstations and appliances.A single package of k8s that installs on Linux.
+ https://microk8s.io/docs/$ snap install microk8s --classic
+ The Kubernetes tutorial, the MicroK8s website contains a short video clip under the Working with MicroK8s section that is worth looking at.
+
+
+ Kubectx
+ Optional(useful tool)
+ Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.
+ https://github.com/ahmetb/kubectx$ sudo apt install kubectx
+ Please refer to the github repositary for more information.https://github.com/ahmetb/kubectx
+
+
+ Kubetail
+ Optional(useful tool)
+ Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running $ kubectl logs -f but for multiple pods.Example usage$ kubetail moja.* -n demo
+ https://github.com/johanhaleby/kubetail
+ Please refer to the github repositary for more information.https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+ Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application.
+ https://docs.helm.sh/using_helm/#installing-helm$ sudo snap install helm --classic
+ Helm Documents
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.
+ https://www.getpostman.com/apps
+ Postman Learning Centre
+
+
+
+
+## 1 Environment Setup
+This environment setup was validated on:
+ * 64-bit version of Ubuntu Bionic 18.04(LTS).
+ * This guide is based on Ubuntu 18.04.2 (bionic) on a x86_64 desktop with 8 CPU's and 16GB RAM.
+
+### 1 Docker
+Dockerd is deployed as part of the MicroK8s installation. The docker daemon used by MicroK8s is listening on unix:///var/snap/microk8s/current/docker.sock. You can access it with the **microk8s.docker** command.
+
+### 2 Kubernetes
+This section will guide the reader through the deployment process to setup Kubernetes.
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 2.1 MicroK8S
+The quickest way to get started is to install directly from the snap store.
+
+Don't have the snap command? [Install snapd first](https://snapcraft.io/docs/core/install).
+
+1. Installing MicroK8s from snap:
+ ```bash
+ snap install microk8s --classic
+ ```
+
+2. Verify MicroK8s is installed and available:
+ ```bash
+ microk8s.status
+ ```
+
+3. During installation you can use the --wait-ready flag to wait for the kubernetes services to initialise:
+ ```bash
+ microk8s.status --wait -ready
+ ```
+
+4. To avoid colliding with a **kubectl** already installed and to avoid overwriting any existing Kubernetes configuration file, MicroK8s adds a **microk8s.kubectl** command, configured to exclusively access the new **MicroK8s** install.
+ ```bash
+ microk8s.kubectl get services
+ ```
+
+5. If you do not have a **kubectl** installed, you can alias **microk8s.kubectl** to **kubectl**:
+ ```bash
+ snap alias microk8s.kubectl kubectl
+ ```
+
+ Reverting it at any time:
+ ```bash
+ snap unalias kubectl
+ ```
+
+ We will stick with the standard command of prefixing with **microk8s.** for this guide.
+
+6. If you already have **kubectl** installed and would like to use it to access the **MicroK8s** deployment:
+ ```bash
+ microk8s.kubectl config view --raw > $HOME/.kube/config
+ ```
+
+7. MicroK8s is a barebones upstream installation of Kubernetes. Additional services that are required will need to be enabled. We need the kube-dns and the dashboard:
+ ```bash
+ microk8s.enable dns dashboard
+ ```
+
+8. As with **kubectl** if you don't have docker you can set an alias;
+ ```bash
+ sudo snap alias microk8s.docker docker
+ ```
+
+ Undo the alias;
+ ```bash
+ sudo snap unalias docker
+ ```
+
+9. We will apply the native microK8s commands by prefix commands **microk8s.**:
+ ```bash
+ microk8s.docker ps
+ ```
+
+10. View the current context:
+ ```bash
+ microk8s.kubectl config get-contexts
+ ```
+
+11. Make sure the current context is **microk8s**. If not, set it as the current context:
+ ```bash
+ kubectl config use-context microk8s
+ ```
+
+#### 2.2 Kubernetes Dashboard
+1. Deploy the Kubernetes dashboard:
+ ```bash
+ microk8s.kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+2. Verify Kubernetes Dashboard is active:
+ ```bash
+ microk8s.kubectl get pod -—namespace=kube-system | grep dashboard
+ ```
+
+3. Start proxy for local UI in new terminal:
+ ```bash
+ microk8s.kubectl proxy ui
+ ```
+
+4. Obtaining the dashboard-token name:
+ ```bash
+ microk8s.kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+5. Retrieve the service-account-token:
+ ```bash
+ microk8s..kubectl -n tube-system describe secrets/kubernetes-dashboard-token-XXXXXX
+ ```
+
+6. Select **Token**. Generate a token to use there by:
+
+ In a new terminal
+ ```bash
+ microk8s.kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+7. The token to use is shown on the last line of the output of that command.
+ ```bash
+ microk8s.kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+8. The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+### 3 Helm
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+#### 3.1 Helm CLI and Tiller
+1. Config Helm CLI and install Helm Tiller on K8s cluster:
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running:
+ ```bash
+ microk8s.kubectl -n tube-system get po | grep tiller
+ ```
+
+#### 3.2 Incubator
+1. Add the incubator. This is required to resolve Helm Chart dependencies required by Mojaloop charts:
+ ```bash
+ sudo helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
+ ```
+
+#### 3.3 Nginx-ingress
+1. Install nginx-ingress for load balancing & external access
+ ```bash
+ sudo helm —-namespace kube-public install stable/nginx-ingress
+ ```
+
+#### 3.4 Helm Configuration
+1. Add mojaloop repo to your Helm config \(optional\):
+ ```bash
+ sudo helm repo add Mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+2. Update helm repositories
+ ```bash
+ sudo helm repo update
+ ```
+
+3. Add the following to your /ect/hosts
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+#### 3.5 Helm Chart Installation
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
+
+1. Lets start by **listing** the current helm charts deployed
+ ```bash
+ helm list
+ ```
+
+2. If you would like to **delete** a deployed helm chart
+ ```bash
+ sudo helm del --purge moja
+ ```
+
+ \*Note: for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
+
+3. To **install** Mojaloop chart\(s\)
+
+ It might be required to execute `helm install` and `helm upgrade` under `sudo`.
+
+4. To install the **full Mojaloop** project
+ ```bash
+ sudo helm install --namespace=demo --name=moja mojaloop/mojaloop
+ ```
+
+ Alternative directly from the repository:
+ ```bash
+ sudo helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
+ ```
+
+5. **or** install a **specific Mojaloop** chart eg. Central-ledger
+ ```bash
+ sudo helm install --namespace=demo --name=moja mojaloop/centralledger
+ ```
+
+ Alternative directly from the repository:
+ ```bash
+ sudo helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
+ ```
+
+6. To upgrade Mojaloop chart\(s\)
+
+ /* Note: 'v5.1.1' is an example value.
+ ```bash
+ sudo helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
+ ```
+
+7. To upgrade a specific chart eg. Central-ledger
+ ```bash
+ sudo helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
+ ```
+
+8. Test system health in your browser after installation
+
+ ml-api-adapter health test
+ ```http request
+ http://ml-api-adapter/health
+ ```
+
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+### 4 Postman
+Postman is used to send requests and receive responses.
+
+#### 4.1 Installing Postman
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+```bash
+wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
+sudo tar -xzf postman.tar.gz -C /opt
+rm postman.tar.gz
+sudo ln -s /opt/Postman/Postman /usr/bin/postman
+```
+
+#### 4.2 Setup Postman
+1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+2. Open **Postman**
+3. Click **Import** and then **Import File**
+4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
+5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+6. Click **Import** and then **Import File**
+7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+8. In the imported collection, navigate to the _central\_ledger_ directory
+
+### 5 Errors On Setup
+Errors encountered and the solutions to be documented within this section.
+
+### 6 Useful Tips
+1. Resolve problems with VSCode and kafka on ubuntu 18.04. To make the code work with VSCode debugger, added the following into the launch.json
+ ```json
+ "env": {
+ "LD_LIBRARY_PATH": "${workspaceFolder}/node_modules/node-rdkafka/build/deps",
+ "WITH_SASL": 0
+ ```
+# Mojaloop local environment setup for Mac
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+Before proceeding, please insure you have reviewed [mojaloop-deployment](./mojaloop-deployment.md).
+
+## Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+* [Local Deployment](environment-setup-mac.md#local-deployment)
+ * [Kubernetes](environment-setup-mac.md#1-kubernetes)
+ * [Kubernetes Installation with Docker](environment-setup-mac.md#11-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](environment-setup-mac.md#12-kubernetes-environment-setup)
+ * [Kubernetes Dashboard](environment-setup-mac.md#12-kubernetes-dashboard)
+ * [Helm](environment-setup-mac.md#2-helm)
+ * [Helm configuration](environment-setup-mac.md#21-helm-configuration)
+ * [Postman](environment-setup-mac.md#3-postman)
+ * [Installing Postman](environment-setup-mac.md#31-installing-postman)
+ * [Setup Postman](environment-setup-mac.md#32-setup-postman)
+* [Errors During Setup](environment-setup-mac.md#4-errors-on-setup)
+
+
+## Local Deployment
+
+The tool set to be deployed as part of the deployment process.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Installation Reference(s)
+ Tutorial Reference(s)
+
+
+
+
+ Docker
+ Required
+ Docker Engine and CLI Client.Local Kubernetes single node cluster.
+ https://docs.docker.com/install
+ https://docs.docker.com/get-started/
+
+
+ Kubectl
+ Required
+ Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.
+ https://kubernetes.io/docs/tasks/tools/install-kubectlDocker Kubernetes Install (as per this guide)$ brew install kubernetes-cli
+ https://kubernetes.io/docs/tutorials/
+
+
+ Kubectx
+ Optional(useful tool)
+ Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.
+ https://github.com/ahmetb/kubectx$ brew install kubectx
+ Please refer to the github repositary for more information.https://github.com/ahmetb/kubectx
+
+
+ Kubetail
+ Optional(useful tool)
+ Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running $ kubectl logs -f but for multiple pods.Example usage$ kubetail moja.* -n demo
+ https://github.com/johanhaleby/kubetail
+ Please refer to the github repositary for more information.https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+ Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application.
+ https://docs.helm.sh/using_helm/#installing-helm$ brew install kubernetes-helm
+ https://helm.sh/docs/
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.
+ https://www.getpostman.com/apps
+ Postman Learning Centre
+
+
+
+
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+### 1 Kubernetes
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 1.1 Kubernetes Installation with Docker
+
+* **kubectl** Complete set of installation instruction are available [here](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
+
+ ```bash
+ brew install kubernetes-cli
+ ```
+ To verify if the installation was successful, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+To install Kubernetes with Docker, follow the steps below;
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
+
+
+
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
+
+
+
+#### 1.2 Kubernetes environment setup:
+
+1. List the current Kubernetes context;
+ ```bash
+ kubectl config get-contexts
+ ```
+
+ **or**
+ ```bash
+ kubectx
+ ```
+2. Change your Contexts;
+ ```bash
+ kubectl config use-context docker-for-desktop
+ ```
+
+ **or**
+ ```bash
+ kubectx docker-for-desktop
+ ```
+
+#### 1.2 Kubernetes Dashboard:
+
+1. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+2. Verify Kubernetes Dashboard;
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+
+3. Start proxy for local UI in new terminal;
+ ```bash
+ kubectl proxy ui
+ ```
+
+4. Open URI in default browser
+ ```bash
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+
+ Select **Token**. Generate a token to use there by:
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+ The token to use is shown on the last line of the output of that command.
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+### 2 Helm
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+#### 2.1 Helm configuration
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster;
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running;
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+
+3. Add mojaloop repo to your Helm config \(optional\);
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts;
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+5. Update helm repositories;
+ ```bash
+ helm repro update
+ ```
+
+6. Install nginx-ingress for load balancing & external access;
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+7. Add the following to your /ect/hosts;
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+8. Test system health in your browser after installation. This will only work if you have an active helm chart deployment running.
+ ml-api-adapter health test
+ ```https request
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+ ```
+
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+### 3 Postman
+
+Postman is used to send requests and receive responses.
+
+#### 3.1 Installing Postman
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+#### 3.2 Setup Postman
+
+1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+2. Open **Postman**
+3. Click **Import** and then **Import File**
+4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
+5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+6. Click **Import** and then **Import File**
+7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+8. In the imported collection, navigate to the _central_ledger_ directory
+
+### 4 Errors On Setup
+Errors encountered and the solutions to be documented within this section.
+# Mojaloop Deployment
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+## Deployment and Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+ * [Software List](mojaloop-deployment.md#1-software-list)
+ * [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](mojaloop-deployment.md#2-local-deployment-and-testing-tools)
+ * [MAC environment](mojaloop-deployment.md#21-mac-environment)
+ * [LINUX environment](mojaloop-deployment.md#21-linux-environment)
+ * [Errors On Setup](mojaloop-deployment.md#3-errors-on-setup)
+
+## 1 Software List
+
+Before proceeding, please have a look at [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations) to insure the minimum resource requirements are available.
+
+
+### 1.1 Deployment Recommendations
+
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+**Resources Requirements:**
+
+* Control Plane \(i.e. Master Node\)
+ ```https request
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+ ```
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
+
+* ETCd Plane:
+ ```https request
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+ ```
+
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
+
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+### 2 Local Deployment and Testing Tools
+
+##### 2.1. MAC environment
+ For Mac, please follow the [Environment Setup Mac](./environment-setup-mac.md) document.
+
+##### 2.1. LINUX environment
+ For Linux, please follow the [Environment Setup Linux](./environment-setup-linux.md) document.
+
+### 3 Errors On Setup
+
+* \`central-ledger’s server IP address could not be found.
+
+ ERR\_NAME\_NOT\_RESOLVED\`
+
+ Resolved by:
+
+ * Verify that a helm chart\(s\) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation) section to install a chart.
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane (i.e. Master Node)
+* Control Plane \(i.e. Master Node\)
- [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+ \`\`\`http request
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- * 3x Master Nodes for future node scaling and HA (High Availability)
+ \`\`\`
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
* ETCd Plane:
+ \`\`\`http request
+
[https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- * 3x ETCd nodes for HA (High Availability)
+ \`\`\`
-* Compute Plane (i.e. Worker Node):
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
TBC once load testing has been concluded. However the current general \*recommended size:
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
+
**Ubuntu** continue from here
or
8. Test system health in your browser after installation
- - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
- - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
+ ml-api-adapter health test
+
+ \`\`\`http request
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+
+ ```text
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
### 2.2 Helm
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* central-ledger’s server IP address could not be found.
+* \`central-ledger’s server IP address could not be found.
- ERR_NAME_NOT_RESOLVED
+ ERR\_NAME\_NOT\_RESOLVED\`
Resolved by:
- * Verify that a helm chart(s) was installed by executing
+ * Verify that a helm chart\(s\) was installed by executing
```bash
helm list
A new release for a repository is made when when a significant change such as a
At of March 6th 2019, the active releases for core central services are as below
-* Helm: [](https://github.com/mojaloop/helm/releases)
-* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
-* Ml-API-Adapter: [](https://github.com/mojaloop/ml-api-adapter/releases)
-* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
-* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
-* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
+* helm: **v5.2.0**
+* central-ledger: v5.3.0
+* ml-api-adapter: v5.2.1
+* central-settlement: v5.2.0
+* central-event-processor: v5.3.0
+* email-notifier: v5.3.0
+# Standards
+
+## Standards for adopting an Open Source contribution into Mojaloop
+
+This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
+
+### Prerequisites
+
+1. The contribution should be in-line with the LevelOne Principles
+2. Basic guidelines regarding status of the contribution \(Code-base / Standards / Designs / Specifications\)
+3. Basic documentation to get started
+
+### Guidelines regarding adoption
+
+1. Create a private repo on the Mojaloop GitHub organization
+2. Have a sub-team of the DA take a look to make sure its portable \(to OSS\) - aligns with L1P principles, etc, and ensure design is in line with standards
+3. Check Licensing
+4. Assess Performance impact
+5. Create action items \(stories\) to update naming, remove/sanitize any items that are not generic
+6. Configuration for 'modes of operation'
+7. Enable CI/CD pipeline
+
+# Creating new Features
+
+## Fork
+
+Fork the Mojaloop repository into your own personal space. Ensure that you keep the `master` branch in sync.
+
+Refer to the following documentation for more information: [https://help.github.com/articles/fork-a-repo/](https://help.github.com/articles/fork-a-repo/)
+
+1. Clone repo using Git Fork button \(refer to the above documentation for more information\)
+2. Clone your forked repo: `git clone https://github.com//.git`
+3. Synchronise your forked repo with Mojaloop
+
+ Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
+
+ You should now see that you have two remotes:
+
+ ```bash
+ git remote -v
+ origin https://github.com//.git (fetch)
+ origin https://github.com//.git (push)
+ mojaloop https://github.com/mojaloop/.git (fetch)
+ mojaloop https://github.com/mojaloop/.git (push)
+ ```
+
+4. To sync to your current branch: `git pull mojaloop ` This will merge any changes from Mojaloop's repo into your forked repo.
+5. Push the changes back to your remote fork: `git push origin `
+
+## Creating a Branch
+
+Create a new branch from the `master` branch with the following format: `/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
+
+1. Create and checkout the branch: `git checkout -b /`
+2. Push the branch to your remote: `git push origin /`
+
+Where `` can be one of the following:
+
+| branchType | Description |
+| :--- | :--- |
+| feature | Any new or maintenance features that are in active development. |
+| hotfix | A hotfix branch is for any urgent fixes. |
+| release | A release branch containing a snapshot of a release. |
+| backup | A temporary backup branch. Used normally during repo maintenance. |
+
+## Merge into Mojaloop Repo
+
+Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
+
+# Versioning of releases made for core Switch services
+
+This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
+
+### [Versioning Strategy](standards.md#versioning-strategy)
+
+### [Current versions](standards.md#current-version)
+
+### [Notes](standards.md#notes)
+
+## Versioning Strategy
+
+1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
+2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
+3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
+
+## Notes
+
+1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
+2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+## Pull Request Process
+
+It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
+
+## Code of conduct
+
+We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
+
+## Licensing
+
+See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+# Central-Ledger Services
+
+The Account Lookup Service _(refer to section `6.2.1.2`)_ as per the [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) implements the following use-cases:
+
+* Participant Look-up
+* Party Look-up
+* Manage Participants Registry information
+ * Adding Participant Registry information
+ * Deleting Participant Registry information
+* Admin Operations
+ * Manage Oracle End-point Routing information
+
+## 1. Design Considerations
+
+### 1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+
+The routing configuration will be based on the following:
+* PartyIdType - See section `7.5.6` of the Mojaloop Specification
+* PartyIdentifier - See section `7.3.24` of the Mojaloop Specification
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+
+### 1.2 ALS Oracle Service/Adapter
+The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+
+* [ALS Oracle Service v1 Interface Contract](../assets//InterfaceContracts/OracleServiceSwaggerv1.yaml)
+
+## 2. Participant Lookup Design
+
+### 2.1 Architecture overview
+
+
+### 2.2 Sequence diagram
+
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
+
+## 3. Party Lookup Design
+
+### 3.1 Architecture overview
+
+
+### 3.2 Sequence diagram
+
+Work in progress..
+
+
+## 4. Database Design
+
+### 4.1 ALS Database Schema
+
+Work in progress..
+
+### 4.2 Oracle Database Schema
+
+This is optional & is dependant on the Oracle's requirements & design.
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
-
+
## Helm Hierarchy of Values
-
+
1. Install Calibre: https://calibre-ebook.com/download
-2. Run `npm run gitbook:export:pdf`
+2. npm install svgexport -g"
+
+3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
+
+4. npm install canvas
+
+5. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
A file `book.pdf` will be generated in the root directory
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
+- Export PDF does not contain a
## Docker
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ pytho
WORKDIR /opt/gitbook/repo
-RUN npm ci
-
-RUN apk del build-dependencies
+RUN npm install
+#
+#RUN apk del build-dependencies
EXPOSE 8989
-CMD npm run docs:serve
+RUN npm run gitbook:install
+
+RUN npm run gitbook:build
+
+CMD npm run gitbook:serve
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
- * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
+ * [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
+ * [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
+ * [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
* [ALS Oracle](api/als-oracle-api-specification.md)
-# APIs Specifications
+# API Specifications
## Mojaloop API
-Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
-* [Mojaloop API Specification](./mojaloop-api-specification.md)
+Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+
+* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
## ALS Oracle API
-Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
+
+* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
-* [ALS Oracle API Specification](./mojaloop-api-specification.md)
-
\ No newline at end of file
+Notes:
+* ALS Oracle API is based on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
+ - Operations follow traditional REST API paradigms more strictly.
+ - Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
+ - `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+ - `GET /participants` response body returns a list of Participants, containing `currency`.
+ - `POST /participants` request body includes the `currency` as part of each record.
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
-
\ No newline at end of file
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
+## INSTRUCTIONS
+# Insert variables to be loaded into Gitbook
+# They can be referenced via {{ book.importedVars. }} the following example
+#
+# ```markdown
+# This is the value of my variable {{ book.importedVars. }}
+#
+#```
+#
+
+mojaloop:
+ spec:
+ version: v1.0
+ uri:
+ doc: https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf
+ api: https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml
+als:
+ oracle:
+ spec:
+ version: v1.0
+ uri:
+ doc: /mojaloop-technical-overview/account-lookup-service/README.md
+ api: https://github.com/mojaloop/documentation/blob/master/api/assets/interface-contracts/oracleServiceSwaggerv1.yaml
+# Changelog
-# 2019-03-08
-* Updated to use gitbook-cli
+[](https://github.com/mojaloop/documentation/releases)
+
+{% changelog %}
+ {% date %}
+ {% message %}
+ {% files %}
+ {% badge %}
+ {% filename link=true %}
+ {% changes truncate=true %}
+ {% endfiles %}
+{% endchangelog %}
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane \(i.e. Master Node\)
+* Control Plane (i.e. Master Node)
- \`\`\`http request
+ [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- \`\`\`
-
- * 3x Master Nodes for future node scaling and HA \(High Availability\)
+ * 3x Master Nodes for future node scaling and HA (High Availability)
* ETCd Plane:
- \`\`\`http request
-
[https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- \`\`\`
+ * 3x ETCd nodes for HA (High Availability)
- * 3x ETCd nodes for HA \(High Availability\)
-
-* Compute Plane \(i.e. Worker Node\):
+* Compute Plane (i.e. Worker Node):
TBC once load testing has been concluded. However the current general \*recommended size:
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
+
**Ubuntu** continue from here
or
8. Test system health in your browser after installation
- ml-api-adapter health test
-
- \`\`\`http request
+ - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
+ - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
- [http://ml-api-adapter/health](http://ml-api-adapter/health)
-
- ```text
- ___
- central-ledger health test
- ```http request
- http://central-ledger/health
- ```
### 2.2 Helm
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* \`central-ledger’s server IP address could not be found.
+* central-ledger’s server IP address could not be found.
- ERR\_NAME\_NOT\_RESOLVED\`
+ ERR_NAME_NOT_RESOLVED
Resolved by:
- * Verify that a helm chart\(s\) was installed by executing
+ * Verify that a helm chart(s) was installed by executing
```bash
helm list
A new release for a repository is made when when a significant change such as a
At of March 6th 2019, the active releases for core central services are as below
-* helm: **v5.2.0**
-* central-ledger: v5.3.0
-* ml-api-adapter: v5.2.1
-* central-settlement: v5.2.0
-* central-event-processor: v5.3.0
-* email-notifier: v5.3.0
+* Helm: [](https://github.com/mojaloop/helm/releases)
+* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
+* Ml-API-Adapter: [](https://github.com/mojaloop/ml-api-adapter/releases)
+* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
+* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
+* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+# Account Lookup Service
+
+The Account Lookup Service **(ALS)** _(refer to section `6.2.1.2`)_ as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) implements the following use-cases:
+
+* Participant Look-up
+* Party Look-up
+* Manage Participants Registry information
+ * Adding Participant Registry information
+ * Deleting Participant Registry information
+
+Use-cases that have been implemented over and above for Hub Operational use:
+* Admin Operations
+ * Manage Oracle End-point Routing information
+ * Manage Switch End-point Routing information
+
+## 1. Design Considerations
+
+### 1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+
+The routing configuration will be based on the following:
+* PartyIdType - See section `7.5.6` of the Mojaloop Specification
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+
+### 1.2 ALS Oracle
+The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+
+## 2. Participant Lookup Design
+
+### 2.1 Architecture overview
+
+
+_Note: The Participant Lookup use-case similarly applies to for a Payee Initiated use-case such as transactionRequests. The difference being that the Payee is the initiation in the above diagram._
+
+### 2.2 Sequence diagram
+
+#### 2.2.1 GET Participant
+
+[Sequence Diagram for GET Participants](als-get-participants.md)
+
+#### 2.2.2 POST Participant
+
+[Sequence Diagram for POST Participants](als-post-participants.md)
+
+## 3. Party Lookup Design
+
+### 3.1 Architecture overview
+
+
+### 3.2 Sequence diagram
+
+#### 3.2.1 GET Parties
+
+[Sequence Diagram for GET Parties](als-get-parties.md)
+
+## 4. Database Design
+
+### 4.1 ALS Database Schema
+
+#### Notes
+- `partyIdType` - Values are currently seeded as per section _`7.5.6`_ [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}).
+- `currency` - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+- `endPointType` - Type identifier for the end-point (e.g. `URL`) which provides flexibility for future transport support.
+- `migration*` - Meta-data tables used by Knex Framework engine.
+- A `centralSwitchEndpoint` must be associated to the `OracleEndpoint` by the Admin API upon insertion of a new `OracleEndpoint` record. If the `centralSwitchEndpoint` is not provided as part of the API Request, then it must be defaulted.
+
+
+
+* [Acount Lookup Service DBeaver ERD](./assets/entities/AccountLookupDB-schema-DBeaver.erd)
+* [Acount Lookup Service MySQL Workbench Export](./assets/entities/AccountLookup-ddl-MySQLWorkbench.sql)
+
+## 5 ALS Oracle Design
+
+Detail design for the Oracle is out of scope for this document. The Oracle design and implementation is specific to each Oracle's requirements.
+
+### 5.1 API Specification
+
+Refer to **ALS Oracle API Specification** in the [API Specifications](../../api/README.md#als-oracle-api) section.
+# GET Participants
+
+## Sequence Diagram
+
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
+# GET Parties
+
+## Sequence Diagram
+
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
+```
+# Sequence Diagram for POST Participants
+
+## Notes
+- Operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
+ - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+
+## Sequence Diagram
+
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
+```
/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep b/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A5. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA3. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0. Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Endpoint Type\nConfig DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant Endpoint\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP ->> ALS_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details
+
+ alt oracleEndpoint match found
+ group #lightskyblue IMPLEMENTATION: Get Oracle Routing Config Sequence [CACHED]
+ activate ALS_PARTICIPANT_HANDLER
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on\n{TYPE} and {CURRENCY} if provided\nError code: 200x
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: Retrieve oracleEndpoint\nError code: 200x
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ switchEndpoint
+ endpointType
+ partyIdType
+ currency (optional)
+ end note
+ ALS_DB --> ALS_TYPE_ENDPOINT_CONFIG_DAO: Return oracleEndpoint result set
+ deactivate ALS_DB
+ ALS_TYPE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of **oracleEndpoint** for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ opt #lightskyblue oracleEndpoint IS NULL
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Error code: 3200
+ end
+ end group
+
+ group #lightskyblue IMPLEMENTATION: Request Participant Information from Oracle Sequence
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information
+ deactivate ORACLE_API
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return list of Participant information
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+ end group
+
+ group #lightskyblue IMPLEMENTATION: Get Switch Routing Config Sequence [CACHED]
+ note right of ALS_PARTICIPANT_HANDLER #lightgray
+ **REFERENCE**: Get Oracle Routing Config Sequence: oracleEndpoint
+ end note
+ alt #lightskyblue oracleEndpoint IS NOT NULL
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Switch Routing information\nError code: 200x
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: Retrieve switchEndpoint\nError code: 200x
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ switchEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Return switchEndpoint result set
+ deactivate ALS_DB
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: Return **switchEndpoint**
+ else
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Error code: 2000
+ end alt
+ end group
+
+ '********************* Get PayerFSP Callback Endpoints - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_PUT
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}?currency={CURRENCY}
+ else oracleEndpoint IS NULL OR error occurred
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ else switchEndpoint IS NULL
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+ deactivate ALS_API
+
+ deactivate ALS_PARTICIPANT_HANDLER
+
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0. Get Party Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+actor "Payee FSP" as PAYEE_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+'entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Parties\nFSP DAO" as ALS_PARTIES_FSP_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+participant ALS_PARTIES_FSP_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Financial Service Provider" #LightGrey
+participant PAYEE_FSP
+end box
+
+' START OF FLOW
+
+group Get Party Details
+ PAYER_FSP ->> ALS_API: Request to get parties's FSP details\nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200zx, 300x, 310x, 320x
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details
+
+ alt oracleEndpoint match found & parties information retrieved
+ activate ALS_PARTICIPANT_HANDLER
+ '********************* Retrieve Oracle Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
+ '********************* Retrieve Switch Routing Information - START ************************
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+ group Validate FSPIOP-Source Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request FSPIOP-Source participant information\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{FSPIOP-Source}\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return FSPIOP-Source participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return FSPIOP-Source participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate FSPIOP-Source participant\nError code: 320x
+ end group
+ |||
+
+ '********************* Request Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information for PayeeFSP\nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER, ORACLE_API
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Request Participant Information from Oracle Sequence]]
+ |||
+ end ref
+
+ '********************* Request Oracle Participant Information - END ************************
+ |||
+ '********************* Request Parties Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTIES_FSP_DAO: Request Parties information from FSP.\nError code: 200x
+
+ activate ALS_PARTIES_FSP_DAO
+ ALS_PARTIES_FSP_DAO ->> PAYEE_FSP: Parties Callback to Destination:\nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}\nResponse code: 202\nError code: 200x, 310x, 320x
+ deactivate ALS_PARTIES_FSP_DAO
+ activate PAYEE_FSP
+
+ PAYEE_FSP ->> ALS_API: Callback with Participant Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}\nError code: 200x, 300x, 310x, 320x
+ deactivate PAYEE_FSP
+
+ ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process Participant Callback Information for PUT
+
+ '********************* Request Parties Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return Participant Information to PayerFSP
+ ALS_API ->> PAYER_FSP: Callback with Parties Information:\nPUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
+
+ else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
+
+ '********************* Get PayeeFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayeeFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200\nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayeeFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayeeFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Georgi Georgiev
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.1. Post Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup\nService (ALS)" as ALS_API
+control "ALS Participant\nHandler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService\nEndpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService\nParticipant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant\nOracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP ->> ALS_API: Request to add participant's FSP details\nPOST - /participants\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+' hnote over ALS_API #lightyellow
+' "POST /participant" operation only supports requests which contain:
+' - All Participant's FSPs match the FSPIOP-Source
+' - All Participant's TYPEs are the same
+' - All Participant's will be of the same Currency
+' end note
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against\nMojaloop Interface Specification\nError code: 300x, 310x
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ loop for keys in ParticipantMap -> TYPE
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+ '********************* Fetch Oracle Routing Information - END ************************
+
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config\nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER, ALS_DB
+ |||
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ |||
+ end ref
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant
+ loop for Participant in ParticipantLis
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source\nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same\nError code: 3100
+
+ end loop
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}\nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO --> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant\nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of Endpoints
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details\nPOST - /participants\nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details\nPOST - /participants\nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API --> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO --> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Return list of Participant information
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}
+
+ else Empty list of End-Points returned or Error occurred
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback Endpoint\nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback Endpoint\nGET - /participants/{FSPIOP-Source}/endpoints\nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API --> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback Endpoints
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO --> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback Endpoints
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback Endpoints for\nFSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER --> ALS_API: Handle error\nError code: 200x, 310x, 320x
+ ALS_API ->> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ end alt
+ deactivate ALS_API
+
+ deactivate ALS_PARTICIPANT_HANDLER
+ end loop
+end
+@enduml
+-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64)
+--
+-- Host: 127.0.0.1 Database: account_lookup
+-- ------------------------------------------------------
+-- Server version 8.0.12
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `centralSwitchEndpoint`
+--
+
+DROP TABLE IF EXISTS `centralSwitchEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `centralSwitchEndpoint` (
+ `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`centralSwitchEndpointId`),
+ KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `centralSwitchEndpoint`
+--
+
+LOCK TABLES `centralSwitchEndpoint` WRITE;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `currency`
+--
+
+DROP TABLE IF EXISTS `currency`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `currency` (
+ `currencyId` varchar(3) NOT NULL,
+ `name` varchar(128) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`currencyId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `currency`
+--
+
+LOCK TABLES `currency` WRITE;
+/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `endpointType`
+--
+
+DROP TABLE IF EXISTS `endpointType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `endpointType` (
+ `endpointTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `type` varchar(50) NOT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`endpointTypeId`),
+ UNIQUE KEY `endpointtype_type_unique` (`type`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `endpointType`
+--
+
+LOCK TABLES `endpointType` WRITE;
+/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `migration`
+--
+
+DROP TABLE IF EXISTS `migration`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `batch` int(11) DEFAULT NULL,
+ `migration_time` timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration`
+--
+
+LOCK TABLES `migration` WRITE;
+/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
+/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `migration_lock`
+--
+
+DROP TABLE IF EXISTS `migration_lock`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration_lock` (
+ `index` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `is_locked` int(11) DEFAULT NULL,
+ PRIMARY KEY (`index`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration_lock`
+--
+
+LOCK TABLES `migration_lock` WRITE;
+/*!40000 ALTER TABLE `migration_lock` DISABLE KEYS */;
+INSERT INTO `migration_lock` VALUES (1,0);
+/*!40000 ALTER TABLE `migration_lock` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oracleEndpoint`
+--
+
+DROP TABLE IF EXISTS `oracleEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oracleEndpoint` (
+ `oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `partyIdTypeId` int(10) unsigned NOT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
+ `currencyId` varchar(255) DEFAULT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`oracleEndpointId`),
+ KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
+ KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
+ KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
+ KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
+ CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
+ CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
+ CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oracleEndpoint`
+--
+
+LOCK TABLES `oracleEndpoint` WRITE;
+/*!40000 ALTER TABLE `oracleEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oracleEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `partyIdType`
+--
+
+DROP TABLE IF EXISTS `partyIdType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `partyIdType` (
+ `partyIdTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL,
+ `description` varchar(512) NOT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`partyIdTypeId`),
+ UNIQUE KEY `partyidtype_name_unique` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `partyIdType`
+--
+
+LOCK TABLES `partyIdType` WRITE;
+/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2019-03-18 17:52:06
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/mojaloop-technical-overview/central-ledger/.gitkeep b/mojaloop-technical-overview/central-ledger/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-ledger/assets/.gitkeep b/mojaloop-technical-overview/central-ledger/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/.gitkeep b/mojaloop-technical-overview/central-settlements/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/assets/.gitkeep b/mojaloop-technical-overview/central-settlements/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
-
+
## Helm Hierarchy of Values
-
+
1. Install Calibre: https://calibre-ebook.com/download
-2. npm install svgexport -g"
-
-3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
-
-4. npm install canvas
-
-5. Run `npm run gitbook:export:pdf`
+2. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
A file `book.pdf` will be generated in the root directory
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
-- Export PDF does not contain a
## Docker
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ pytho
WORKDIR /opt/gitbook/repo
-RUN npm install
-#
-#RUN apk del build-dependencies
+RUN npm ci
-EXPOSE 8989
-
-RUN npm run gitbook:install
+RUN apk del build-dependencies
-RUN npm run gitbook:build
+EXPOSE 8989
-CMD npm run gitbook:serve
+CMD npm run docs:serve
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
- * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
- * [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
- * [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
- * [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
* [ALS Oracle](api/als-oracle-api-specification.md)
-# API Specifications
+# APIs Specifications
## Mojaloop API
-Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-
-* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
-* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
+Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
+* [Mojaloop API Specification](./mojaloop-api-specification.md)
## ALS Oracle API
-Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
-
-* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
-* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
-Notes:
-* ALS Oracle API is based on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
- - Operations follow traditional REST API paradigms more strictly.
- - Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
- - `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- - `GET /participants` response body returns a list of Participants, containing `currency`.
- - `POST /participants` request body includes the `currency` as part of each record.
+* [ALS Oracle API Specification](./mojaloop-api-specification.md)
+
\ No newline at end of file
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve the PUT end-point)A1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 8. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve both the POST and PUT end-points)A1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A7. User Lookup GET /parties/<idType>/<id>A7. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A9. User Lookup PUT /parties/<idType>/<id>A9. User Lookup <br>PUT /parties/<idType>/<id>A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0 Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Oracle Registry Store" as ORACLE_STORE
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Internal/External Oracle Data Store/Service" #LightGrey
+participant ORACLE_STORE
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP -> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_API
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details. \nError code: 3200
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
+ end alt
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ORACLE_API
+
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information. \nError code: 3200
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information. \nError code: 3200
+
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}?currency={CURRENCY}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occured
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 3200
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.0 Get Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+entity "Pathfinder Service" as PATHFINDER_SERVICE
+actor "GSMA Pathfinder" as PATHFINDER
+actor "Payee FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+box "Pathfinder Library" #LightBlue
+participant PATHFINDER_SERVICE
+end box
+
+participant PATHFINDER
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Get Party's Details
+ PAYER_FSP -> ALS: Request to get party's details \nGET - /parties/{Type}/{ID}
+ activate ALS
+ ALS -> PARTIES_HANDLER: Get Party by ID and Type \n(PartiesByTypeAndID)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Source Party's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Source Party Error Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Party Error Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Party Error Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> PATHFINDER_SERVICE: Query Party ID
+ activate PATHFINDER_SERVICE
+ PATHFINDER_SERVICE -> PATHFINDER: Query Party
+ activate PATHFINDER
+ PATHFINDER -> PATHFINDER_SERVICE: Return Mobile Country Code \nand Network Code
+ deactivate PATHFINDER
+ PATHFINDER_SERVICE -> PARTIES_HANDLER: Return MCC & MNC
+ deactivate PATHFINDER_SERVICE
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Participant Name\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Participant Name \n(getParticipantNameFromMccMnc)
+ activate DB
+ hnote over DB #lightyellow
+ participantMno
+ end note
+ DB --> PARTICIPANT_DAO: Return Participant Name
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Participant Name
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant with Updated Headers
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 202
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.1 Put Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "PAYER_FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+actor "Payee_FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Put Party's Details
+ PAYER_FSP -> ALS: Callback for the Get Party's request \nPUT - /parties/{Type}/{ID}
+ note right of PAYER_FSP #yellow
+ Message:
+ party: {
+ partyIdInfo: {
+ “partyIdType”: “PERSONAL_ID”,
+ “partyIdentifier”: “1551212”,
+ “partySubIdOrType”: “License”,
+ “fspId”: “1234”
+ },
+ merchantClassificationCode: 4321,
+ “name”: “Justin Trudeau”,
+ “personalInfo”: {
+ “complexName”: {
+ “firstName”: “Justin”,
+ “middleName”: “Pierre”,
+ “lastName”: “Trudeau”
+ },
+ “dateOfBirth”: “1971-12-25”
+ }
+ }
+ end note
+ activate ALS
+ ALS -> PARTIES_HANDLER: Put Party by ID and Type \n(PartiesByTypeAndID2)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 200
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
-# Changelog
-[](https://github.com/mojaloop/documentation/releases)
-
-{% changelog %}
- {% date %}
- {% message %}
- {% files %}
- {% badge %}
- {% filename link=true %}
- {% changes truncate=true %}
- {% endfiles %}
-{% endchangelog %}
+# 2019-03-08
+* Updated to use gitbook-cli
We follow the [Standard style guidelines](https://github.com/feross/standard). A
For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
###
+
Instead of the word "project," use a specific noun such as component, microservi
* Step 1
* Step 2
* Step 2
+
Examples: _The U.S. State Department is in the United States._ _The foundation's
#### URL
Reference web addresses without the http:// as follows: _www.gatesfoundation.org_
+
+# Mojaloop Setup for Ubuntu
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+Before proceeding, please insure you have reviewed [mojaloop-deployment](./mojaloop-deployment.md).
+
+## Setup Introduction
+
+This document will provide guidelines to a technical capable resources to setup, deploy and configure the Mojaloop applications on a local environment, utilizing Docker, Kubernetes and HELM charts.
+
+* [Environment Setup](environment-setup-linux.md#1-environment-setup)
+ * [Docker](environment-setup-linux.md#1-docker)
+ * [Kubernetes](environment-setup-linux.md#2-kubernetes)
+ * [MicroK8S](environment-setup-linux.md#21-microk8s)
+ * [Kubernetes Dashboard](environment-setup-linux.md#22-kubernetes-dashboard)
+ * [Helm](environment-setup-linux.md#3-helm)
+ * [Helm CLI and Tiller](environment-setup-linux.md#31-helm-cli-and-tiller)
+ *[Incubator](environment-setup-linux.md#32-incubator)
+ *[Nginx-ingress](environment-setup-linux.md#33-nginx-ingress)
+ *[Helm Configuration](environment-setup-linux.md#34-helm-configuration)
+ *[Helm Chart Installation](environment-setup-linux.md#35-helm-chart-installation)
+ * [Postman](environment-setup-linux.md#4-postman)
+ * [Installing Postman](environment-setup-linux.md#41-installing-postman)
+ * [Setup Postman](environment-setup-linux.md#42-setup-postman)
+* [Errors During Setup](environment-setup-linux.md#5-errors-on-setup)
+
+The tool set to be deployed as part of the deployment process. The below table is just a point of reference.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Installation Reference(s)
+ Tutorial Reference(s)
+
+
+
+
+ Docker
+ Required
+ Docker Engine and CLI Client.Local Kubernetes single node cluster.
+ https://docs.docker.com/install
+ Getting started with Docker
+
+
+ Kubectl
+ Required
+ Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.
+ https://kubernetes.io/docs/tasks/tools/install-kubectlDocker Kubernetes Install (as per this guide)$ sudo snap install kubectl --classic
+ Kubernetes Tutorials/
+
+
+ MicroK8s
+ Required
+ Kubernetes for workstations and appliances.A single package of k8s that installs on Linux.
+ https://microk8s.io/docs/$ snap install microk8s --classic
+ The Kubernetes tutorial, the MicroK8s website contains a short video clip under the Working with MicroK8s section that is worth looking at.
+
+
+ Kubectx
+ Optional(useful tool)
+ Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.
+ https://github.com/ahmetb/kubectx$ sudo apt install kubectx
+ Please refer to the github repositary for more information.https://github.com/ahmetb/kubectx
+
+
+ Kubetail
+ Optional(useful tool)
+ Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running $ kubectl logs -f but for multiple pods.Example usage$ kubetail moja.* -n demo
+ https://github.com/johanhaleby/kubetail
+ Please refer to the github repositary for more information.https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+ Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application.
+ https://docs.helm.sh/using_helm/#installing-helm$ sudo snap install helm --classic
+ Helm Documents
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.
+ https://www.getpostman.com/apps
+ Postman Learning Centre
+
+
+
+
+## 1 Environment Setup
+
+This environment setup was validated on:
+ * 64-bit version of Ubuntu Bionic 18.04(LTS).
+ * This guide is based on Ubuntu 18.04.2 (bionic) on a x86_64 desktop with 8 CPU's and 16GB RAM.
+
+### 1 Docker
+
+Dockerd is deployed as part of the MicroK8s installation. The docker daemon used by MicroK8s is listening on unix:///var/snap/microk8s/current/docker.sock. You can access it with the **microk8s.docker** command.
+
+### 2 Kubernetes
+
+This section will guide the reader through the deployment process to setup Kubernetes.
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 2.1 MicroK8S
+The quickest way to get started is to install directly from the snap store.
+
+Don't have the snap command? [Install snapd first](https://snapcraft.io/docs/core/install).
+
+1. Installing MicroK8s from snap:
+ ```bash
+ snap install microk8s --classic
+ ```
+
+2. Verify MicroK8s is installed and available:
+ ```bash
+ microk8s.status
+ ```
+
+3. During installation you can use the --wait-ready flag to wait for the kubernetes services to initialise:
+ ```bash
+ microk8s.status --wait -ready
+ ```
+
+4. To avoid colliding with a **kubectl** already installed and to avoid overwriting any existing Kubernetes configuration file, MicroK8s adds a **microk8s.kubectl** command, configured to exclusively access the new **MicroK8s** install.
+ ```bash
+ microk8s.kubectl get services
+ ```
+
+5. If you do not have a **kubectl** installed, you can alias **microk8s.kubectl** to **kubectl**:
+ ```bash
+ snap alias microk8s.kubectl kubectl
+ ```
+
+ Reverting it at any time:
+ ```bash
+ snap unalias kubectl
+ ```
+
+ We will stick with the standard command of prefixing with **microk8s.** for this guide.
+
+6. If you already have **kubectl** installed and would like to use it to access the **MicroK8s** deployment:
+ ```bash
+ microk8s.kubectl config view --raw > $HOME/.kube/config
+ ```
+
+7. MicroK8s is a barebones upstream installation of Kubernetes. Additional services that are required will need to be enabled. We need the kube-dns and the dashboard:
+ ```bash
+ microk8s.enable dns dashboard
+ ```
+
+8. As with **kubectl** if you don't have docker you can set an alias;
+ ```bash
+ sudo snap alias microk8s.docker docker
+ ```
+
+ Undo the alias;
+ ```bash
+ sudo snap unalias docker
+ ```
+
+9. We will apply the native microK8s commands by prefix commands **microk8s.**:
+ ```bash
+ microk8s.docker ps
+ ```
+
+10. View the current context:
+ ```bash
+ microk8s.kubectl config get-contexts
+ ```
+
+11. Make sure the current context is **microk8s**. If not, set it as the current context:
+ ```bash
+ kubectl config use-context microk8s
+ ```
+
+#### 2.2 Kubernetes Dashboard
+
+1. Deploy the Kubernetes dashboard:
+ ```bash
+ microk8s.kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+2. Verify Kubernetes Dashboard is active:
+ ```bash
+ microk8s.kubectl get pod -—namespace=kube-system | grep dashboard
+ ```
+
+3. Start proxy for local UI in new terminal:
+ ```bash
+ microk8s.kubectl proxy ui
+ ```
+
+4. Obtaining the dashboard-token name:
+ ```bash
+ microk8s.kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+5. Retrieve the service-account-token:
+ ```bash
+ microk8s..kubectl -n tube-system describe secrets/kubernetes-dashboard-token-XXXXXX
+ ```
+
+6. Select **Token**. Generate a token to use there by:
+
+ In a new terminal
+ ```bash
+ microk8s.kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+7. The token to use is shown on the last line of the output of that command.
+ ```bash
+ microk8s.kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+8. The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+### 3 Helm
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+#### 3.1 Helm CLI and Tiller
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster:
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running:
+ ```bash
+ microk8s.kubectl -n tube-system get po | grep tiller
+ ```
+
+#### 3.2 Incubator
+
+1. Add the incubator. This is required to resolve Helm Chart dependencies required by Mojaloop charts:
+ ```bash
+ sudo helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
+ ```
+
+#### 3.3 Nginx-ingress
+
+1. Install nginx-ingress for load balancing & external access
+ ```bash
+ sudo helm —-namespace kube-public install stable/nginx-ingress
+ ```
+
+#### 3.4 Helm Configuration
+
+1. Add mojaloop repo to your Helm config \(optional\):
+ ```bash
+ sudo helm repo add Mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+2. Update helm repositories
+ ```bash
+ sudo helm repo update
+ ```
+
+3. Add the following to your /ect/hosts
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+#### 3.5 Helm Chart Installation
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
+
+1. Lets start by **listing** the current helm charts deployed
+ ```bash
+ helm list
+ ```
+
+2. If you would like to **delete** a deployed helm chart
+ ```bash
+ sudo helm del --purge moja
+ ```
+
+ \*Note: for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
+
+3. To **install** Mojaloop chart\(s\)
+
+ It might be required to execute `helm install` and `helm upgrade` under `sudo`.
+
+4. To install the **full Mojaloop** project
+ ```bash
+ sudo helm install --namespace=demo --name=moja mojaloop/mojaloop
+ ```
+
+ Alternative directly from the repository:
+ ```bash
+ sudo helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
+ ```
+
+5. **or** install a **specific Mojaloop** chart eg. Central-ledger
+ ```bash
+ sudo helm install --namespace=demo --name=moja mojaloop/centralledger
+ ```
+
+ Alternative directly from the repository:
+ ```bash
+ sudo helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
+ ```
+
+6. To upgrade Mojaloop chart\(s\)
+
+ /* Note: 'v5.1.1' is an example value.
+ ```bash
+ sudo helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
+ ```
+
+7. To upgrade a specific chart eg. Central-ledger
+ ```bash
+ sudo helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
+ ```
+
+8. Test system health in your browser after installation
+
+ ml-api-adapter health test
+ ```http request
+ http://ml-api-adapter/health
+ ```
+
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+### 4 Postman
+
+Postman is used to send requests and receive responses.
+
+#### 4.1 Installing Postman
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+```bash
+wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
+sudo tar -xzf postman.tar.gz -C /opt
+rm postman.tar.gz
+sudo ln -s /opt/Postman/Postman /usr/bin/postman
+```
+
+#### 4.2 Setup Postman
+
+1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+2. Open **Postman**
+3. Click **Import** and then **Import File**
+4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
+5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+6. Click **Import** and then **Import File**
+7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+8. In the imported collection, navigate to the _central\_ledger_ directory
+
+### 5 Errors On Setup
+Errors encountered and the solutions to be documented within this section.
\ No newline at end of file
+# Mojaloop local environment setup for Mac
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+Before proceeding, please insure you have reviewed [mojaloop-deployment](./mojaloop-deployment.md).
+
+## Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+* [Local Deployment](environment-setup-mac.md#local-deployment)
+ * [Kubernetes](environment-setup-mac.md#1-kubernetes)
+ * [Kubernetes Installation with Docker](environment-setup-mac.md#11-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](environment-setup-mac.md#12-kubernetes-environment-setup)
+ * [Kubernetes Dashboard](environment-setup-mac.md#12-kubernetes-dashboard)
+ * [Helm](environment-setup-mac.md#2-helm)
+ * [Helm configuration](environment-setup-mac.md#21-helm-configuration)
+ * [Postman](environment-setup-mac.md#3-postman)
+ * [Installing Postman](environment-setup-mac.md#31-installing-postman)
+ * [Setup Postman](environment-setup-mac.md#32-setup-postman)
+* [Errors During Setup](environment-setup-mac.md#4-errors-on-setup)
+
+
+## Local Deployment
+
+The tool set to be deployed as part of the deployment process.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Installation Reference(s)
+ Tutorial Reference(s)
+
+
+
+
+ Docker
+ Required
+ Docker Engine and CLI Client.Local Kubernetes single node cluster.
+ https://docs.docker.com/install
+ https://docs.docker.com/get-started/
+
+
+ Kubectl
+ Required
+ Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.
+ https://kubernetes.io/docs/tasks/tools/install-kubectlDocker Kubernetes Install (as per this guide)$ brew install kubernetes-cli
+ https://kubernetes.io/docs/tutorials/
+
+
+ Kubectx
+ Optional(useful tool)
+ Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.
+ https://github.com/ahmetb/kubectx$ brew install kubectx
+ Please refer to the github repositary for more information.https://github.com/ahmetb/kubectx
+
+
+ Kubetail
+ Optional(useful tool)
+ Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running $ kubectl logs -f but for multiple pods.Example usage$ kubetail moja.* -n demo
+ https://github.com/johanhaleby/kubetail
+ Please refer to the github repositary for more information.https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+ Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application.
+ https://docs.helm.sh/using_helm/#installing-helm$ brew install kubernetes-helm
+ https://helm.sh/docs/
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.
+ https://www.getpostman.com/apps
+ Postman Learning Centre
+
+
+
+
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+### 1 Kubernetes
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 1.1 Kubernetes Installation with Docker
+
+* **kubectl** Complete set of installation instruction are available [here](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
+
+ ```bash
+ brew install kubernetes-cli
+ ```
+ To verify if the installation was successful, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+To install Kubernetes with Docker, follow the steps below;
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
+
+
+
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
+
+
+
+#### 1.2 Kubernetes environment setup:
+
+1. List the current Kubernetes context;
+ ```bash
+ kubectl config get-contexts
+ ```
+
+ **or**
+ ```bash
+ kubectx
+ ```
+2. Change your Contexts;
+ ```bash
+ kubectl config use-context docker-for-desktop
+ ```
+
+ **or**
+ ```bash
+ kubectx docker-for-desktop
+ ```
+
+#### 1.2 Kubernetes Dashboard:
+
+1. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+2. Verify Kubernetes Dashboard;
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+
+3. Start proxy for local UI in new terminal;
+ ```bash
+ kubectl proxy ui
+ ```
+
+4. Open URI in default browser
+ ```bash
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+
+ Select **Token**. Generate a token to use there by:
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+ The token to use is shown on the last line of the output of that command.
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+### 2 Helm
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+#### 2.1 Helm configuration
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster;
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running;
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+
+3. Add mojaloop repo to your Helm config \(optional\);
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts;
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+5. Update helm repositories;
+ ```bash
+ helm repro update
+ ```
+
+6. Install nginx-ingress for load balancing & external access;
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+7. Add the following to your /ect/hosts;
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+8. Test system health in your browser after installation. This will only work if you have an active helm chart deployment running.
+ ml-api-adapter health test
+ ```https request
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+ ```
+
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+### 3 Postman
+
+Postman is used to send requests and receive responses.
+
+#### 3.1 Installing Postman
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+#### 3.2 Setup Postman
+
+1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+2. Open **Postman**
+3. Click **Import** and then **Import File**
+4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
+5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+6. Click **Import** and then **Import File**
+7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+8. In the imported collection, navigate to the _central_ledger_ directory
+
+### 4 Errors On Setup
+Errors encountered and the solutions to be documented within this section.
+# Mojaloop Deployment
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+## Deployment and Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+ * [Software List](mojaloop-deployment.md#1-software-list)
+ * [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](mojaloop-deployment.md#2-local-deployment-and-testing-tools)
+ * [MAC environment](mojaloop-deployment.md#21-mac-environment)
+ * [LINUX environment](mojaloop-deployment.md#21-linux-environment)
+ * [Errors On Setup](mojaloop-deployment.md#3-errors-on-setup)
+
+## 1 Software List
+
+Before proceeding, please have a look at [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations) to insure the minimum resource requirements are available.
+
+
+### 1.1 Deployment Recommendations
+
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+**Resources Requirements:**
+
+* Control Plane \(i.e. Master Node\)
+ ```https request
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+ ```
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
+
+* ETCd Plane:
+ ```https request
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+ ```
+
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
+
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+### 2 Local Deployment and Testing Tools
+
+##### 2.1. MAC environment
+ For Mac, please follow the [Environment Setup Mac](./environment-setup-mac.md) document.
+
+##### 2.1. LINUX environment
+ For Linux, please follow the [Environment Setup Linux](./environment-setup-linux.md) document.
+
+### 3 Errors On Setup
+
+* \`central-ledger’s server IP address could not be found.
+
+ ERR\_NAME\_NOT\_RESOLVED\`
+
+ Resolved by:
+
+ * Verify that a helm chart\(s\) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation) section to install a chart.
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane (i.e. Master Node)
+* Control Plane \(i.e. Master Node\)
- [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+ \`\`\`http request
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- * 3x Master Nodes for future node scaling and HA (High Availability)
+ \`\`\`
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
* ETCd Plane:
+ \`\`\`http request
+
[https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- * 3x ETCd nodes for HA (High Availability)
+ \`\`\`
-* Compute Plane (i.e. Worker Node):
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
TBC once load testing has been concluded. However the current general \*recommended size:
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
+
**Ubuntu** continue from here
or
8. Test system health in your browser after installation
- - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
- - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
+ ml-api-adapter health test
+
+ \`\`\`http request
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+
+ ```text
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
### 2.2 Helm
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* central-ledger’s server IP address could not be found.
+* \`central-ledger’s server IP address could not be found.
- ERR_NAME_NOT_RESOLVED
+ ERR\_NAME\_NOT\_RESOLVED\`
Resolved by:
- * Verify that a helm chart(s) was installed by executing
+ * Verify that a helm chart\(s\) was installed by executing
```bash
helm list
```
If the helm charts are not listed, see the [Helm Chart Installation](./#221-helm-chart-installation) section to install a chart.
+
A new release for a repository is made when when a significant change such as a
At of March 6th 2019, the active releases for core central services are as below
-* Helm: [](https://github.com/mojaloop/helm/releases)
-* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
-* Ml-API-Adapter: [](https://github.com/mojaloop/ml-api-adapter/releases)
-* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
-* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
-* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
+* helm: **v5.2.0**
+* central-ledger: v5.3.0
+* ml-api-adapter: v5.2.1
+* central-settlement: v5.2.0
+* central-event-processor: v5.3.0
+* email-notifier: v5.3.0
+# Standards
+
+## Standards for adopting an Open Source contribution into Mojaloop
+
+This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
+
+### Prerequisites
+
+1. The contribution should be in-line with the LevelOne Principles
+2. Basic guidelines regarding status of the contribution \(Code-base / Standards / Designs / Specifications\)
+3. Basic documentation to get started
+
+### Guidelines regarding adoption
+
+1. Create a private repo on the Mojaloop GitHub organization
+2. Have a sub-team of the DA take a look to make sure its portable \(to OSS\) - aligns with L1P principles, etc, and ensure design is in line with standards
+3. Check Licensing
+4. Assess Performance impact
+5. Create action items \(stories\) to update naming, remove/sanitize any items that are not generic
+6. Configuration for 'modes of operation'
+7. Enable CI/CD pipeline
+
+# Creating new Features
+
+## Fork
+
+Fork the Mojaloop repository into your own personal space. Ensure that you keep the `master` branch in sync.
+
+Refer to the following documentation for more information: [https://help.github.com/articles/fork-a-repo/](https://help.github.com/articles/fork-a-repo/)
+
+1. Clone repo using Git Fork button \(refer to the above documentation for more information\)
+2. Clone your forked repo: `git clone https://github.com//.git`
+3. Synchronise your forked repo with Mojaloop
+
+ Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
+
+ You should now see that you have two remotes:
+
+ ```bash
+ git remote -v
+ origin https://github.com//.git (fetch)
+ origin https://github.com//.git (push)
+ mojaloop https://github.com/mojaloop/.git (fetch)
+ mojaloop https://github.com/mojaloop/.git (push)
+ ```
+
+4. To sync to your current branch: `git pull mojaloop ` This will merge any changes from Mojaloop's repo into your forked repo.
+5. Push the changes back to your remote fork: `git push origin `
+
+## Creating a Branch
+
+Create a new branch from the `master` branch with the following format: `/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
+
+1. Create and checkout the branch: `git checkout -b /`
+2. Push the branch to your remote: `git push origin /`
+
+Where `` can be one of the following:
+
+| branchType | Description |
+| :--- | :--- |
+| feature | Any new or maintenance features that are in active development. |
+| hotfix | A hotfix branch is for any urgent fixes. |
+| release | A release branch containing a snapshot of a release. |
+| backup | A temporary backup branch. Used normally during repo maintenance. |
+
+## Merge into Mojaloop Repo
+
+Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
+
+# Versioning of releases made for core Switch services
+
+This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
+
+### [Versioning Strategy](standards.md#versioning-strategy)
+
+### [Current versions](standards.md#current-version)
+
+### [Notes](standards.md#notes)
+
+## Versioning Strategy
+
+1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
+2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
+3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
+
+## Notes
+
+1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
+2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+## Pull Request Process
+
+It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
+
+## Code of conduct
+
+We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
+
+## Licensing
+
+See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+
We use a [standard developer code of conduct](https://www.contributor-covenant.o
### Licensing
See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+##
+
Where `` can be one of the following:
### Merge into Mojaloop Repo
Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
+
The currrent version information for Mojaloop can be found [here](../mojaloop-de
1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+###
+
Here we document the reasoning behind certain tools, technology and process choi
* **Services** - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it.
* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider \(DFSP\).
+
# Automated Testing
The page describes our automated testing philosophy along with the regression testing framework.
+
Limited to what the consuming teams need that isn't covered by existing unit, co
### End to End
End to end tests cover acceptance tests from scenarios.
+
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
As we develop the APIs, we will make consistent choices about non-functional req
7: [https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
8: _Semantic Versioning 2.0.0_, [http://semver.org/](http://semver.org/), retrieved August 18, 2016.
+
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+
After Jahari has entered his pin on his phone he is able to see his account bala
```
The merchant gets confirmation that he received payment and he prints a receipt for Jahari. Since Jahari has his phone with him today he also re-checks his account balance again to confirm that appropriate funds were taken from his account. Jahari is happy that this is an easy process and he can see that he has plenty of money left to set aside this month for his family to use on education or health expenses.
+
The Level One Project Guide outlines a vision of how an inclusive digital financ
* Meeting or exceeding the convenience, cost and utility of cash
By utilizing an open, digital approach to transactions, and partnering with organizations across the public and private sectors, the Level One Project Guide aims to provide access to a robust, low-cost shared digital financial services infrastructure, sparking innovation from new and existing participants, reducing risk, and generating substantial value for providers, individuals and economies in developing markets. Additional resources have been created to help governments, NGOs and financial service providers successfully implement these changes.
+
Below is a list of larger initiatives and epics by area that will help to furthe
* Automate bulk import tests
* Forensic log test
* Account management test
+
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+# Central-Ledger Services
+
+The Account Lookup Service _(refer to section `6.2.1.2`)_ as per the [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) implements the following use-cases:
+
+* Participant Look-up
+* Party Look-up
+* Manage Participants Registry information
+ * Adding Participant Registry information
+ * Deleting Participant Registry information
+* Admin Operations
+ * Manage Oracle End-point Routing information
+
+## 1. Design Considerations
+
+### 1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+
+The routing configuration will be based on the following:
+* PartyIdType - See section `7.5.6` of the Mojaloop Specification
+* PartyIdentifier - See section `7.3.24` of the Mojaloop Specification
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+
+### 1.2 ALS Oracle Service/Adapter
+The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+
+* [ALS Oracle Service v1 Interface Contract](../assets//InterfaceContracts/OracleServiceSwaggerv1.yaml)
+
+## 2. Participant Lookup Design
+
+### 2.1 Architecture overview
+
+
+### 2.2 Sequence diagram
+
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
+
+## 3. Party Lookup Design
+
+### 3.1 Architecture overview
+
+
+### 3.2 Sequence diagram
+
+Work in progress..
+
+
+## 4. Database Design
+
+### 4.1 ALS Database Schema
+
+Work in progress..
+
+### 4.2 Oracle Database Schema
+
+This is optional & is dependant on the Oracle's requirements & design.
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
-
+
## Helm Hierarchy of Values
-
+
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A5. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA3. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA5. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
The Central Settlements service is part of the Mojaloop project and deployment.
* The central settlements service exposes Settlement API to manage the settlements between FSPs and the Central Hub.
* The service manages Settlement Windows and Settlements Event Triggers and provides information about FSPs accounts and settlements.
-
+
We follow the [Standard style guidelines](https://github.com/feross/standard). A
For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
###
-
Instead of the word "project," use a specific noun such as component, microservi
* Step 1
* Step 2
* Step 2
-
Examples: _The U.S. State Department is in the United States._ _The foundation's
#### URL
Reference web addresses without the http:// as follows: _www.gatesfoundation.org_
-
sudo ln -s /opt/Postman/Postman /usr/bin/postman
```
If the helm charts are not listed, see the [Helm Chart Installation](./#221-helm-chart-installation) section to install a chart.
-
We use a [standard developer code of conduct](https://www.contributor-covenant.o
### Licensing
See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
-
-##
-
Where `` can be one of the following:
### Merge into Mojaloop Repo
Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
-
The currrent version information for Mojaloop can be found [here](../mojaloop-de
1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
-
-###
-
Here we document the reasoning behind certain tools, technology and process choi
* **Services** - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it.
* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider \(DFSP\).
-
# Automated Testing
The page describes our automated testing philosophy along with the regression testing framework.
-
Limited to what the consuming teams need that isn't covered by existing unit, co
### End to End
End to end tests cover acceptance tests from scenarios.
-
As we develop the APIs, we will make consistent choices about non-functional req
7: [https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
8: _Semantic Versioning 2.0.0_, [http://semver.org/](http://semver.org/), retrieved August 18, 2016.
-
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
-
Mojaloop grew out of principles set forth by the Financial Services for the Poor
Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
-
After Jahari has entered his pin on his phone he is able to see his account bala
```
The merchant gets confirmation that he received payment and he prints a receipt for Jahari. Since Jahari has his phone with him today he also re-checks his account balance again to confirm that appropriate funds were taken from his account. Jahari is happy that this is an easy process and he can see that he has plenty of money left to set aside this month for his family to use on education or health expenses.
-
The Level One Project Guide outlines a vision of how an inclusive digital financ
* Meeting or exceeding the convenience, cost and utility of cash
By utilizing an open, digital approach to transactions, and partnering with organizations across the public and private sectors, the Level One Project Guide aims to provide access to a robust, low-cost shared digital financial services infrastructure, sparking innovation from new and existing participants, reducing risk, and generating substantial value for providers, individuals and economies in developing markets. Additional resources have been created to help governments, NGOs and financial service providers successfully implement these changes.
-
Below is a list of larger initiatives and epics by area that will help to furthe
* Automate bulk import tests
* Forensic log test
* Account management test
-
# Fraud Services
Work in progress...
-
1. Install Calibre: https://calibre-ebook.com/download
-2. Run `npm run gitbook:export:pdf`
+2. npm install svgexport -g"
+
+3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
+
+4. npm install canvas
+
+5. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
A file `book.pdf` will be generated in the root directory
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
+- Export PDF does not contain a
## Docker
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ pytho
WORKDIR /opt/gitbook/repo
-RUN npm ci
-
-RUN apk del build-dependencies
+RUN npm install
+#
+#RUN apk del build-dependencies
EXPOSE 8989
-CMD npm run docs:serve
+RUN npm run gitbook:install
+
+RUN npm run gitbook:build
+
+CMD npm run gitbook:serve
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
- * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
+ * [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
+ * [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
+ * [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
* [ALS Oracle](api/als-oracle-api-specification.md)
-# APIs Specifications
+# API Specifications
## Mojaloop API
-Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
-* [Mojaloop API Specification](./mojaloop-api-specification.md)
+Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+
+* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
## ALS Oracle API
-Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
+
+* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
-* [ALS Oracle API Specification](./mojaloop-api-specification.md)
-
\ No newline at end of file
+Notes:
+* ALS Oracle API is based on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
+ - Operations follow traditional REST API paradigms more strictly.
+ - Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
+ - `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+ - `GET /participants` response body returns a list of Participants, containing `currency`.
+ - `POST /participants` request body includes the `currency` as part of each record.
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
-
\ No newline at end of file
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
+## INSTRUCTIONS
+# Insert variables to be loaded into Gitbook
+# They can be referenced via {{ book.importedVars. }} the following example
+#
+# ```markdown
+# This is the value of my variable {{ book.importedVars. }}
+#
+#```
+#
+
+mojaloop:
+ spec:
+ version: v1.0
+ uri:
+ doc: https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf
+ api: https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml
+als:
+ oracle:
+ spec:
+ version: v1.0
+ uri:
+ doc: /mojaloop-technical-overview/account-lookup-service/README.md
+ api: https://github.com/mojaloop/documentation/blob/master/api/assets/interface-contracts/oracleServiceSwaggerv1.yaml
+# Changelog
-# 2019-03-08
-* Updated to use gitbook-cli
+[](https://github.com/mojaloop/documentation/releases)
+
+{% changelog %}
+ {% date %}
+ {% message %}
+ {% files %}
+ {% badge %}
+ {% filename link=true %}
+ {% changes truncate=true %}
+ {% endfiles %}
+{% endchangelog %}
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane \(i.e. Master Node\)
+* Control Plane (i.e. Master Node)
- \`\`\`http request
+ [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- \`\`\`
-
- * 3x Master Nodes for future node scaling and HA \(High Availability\)
+ * 3x Master Nodes for future node scaling and HA (High Availability)
* ETCd Plane:
- \`\`\`http request
-
[https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- \`\`\`
+ * 3x ETCd nodes for HA (High Availability)
- * 3x ETCd nodes for HA \(High Availability\)
-
-* Compute Plane \(i.e. Worker Node\):
+* Compute Plane (i.e. Worker Node):
TBC once load testing has been concluded. However the current general \*recommended size:
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
+
**Ubuntu** continue from here
or
8. Test system health in your browser after installation
- ml-api-adapter health test
-
- \`\`\`http request
+ - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
+ - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
- [http://ml-api-adapter/health](http://ml-api-adapter/health)
-
- ```text
- ___
- central-ledger health test
- ```http request
- http://central-ledger/health
- ```
### 2.2 Helm
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* \`central-ledger’s server IP address could not be found.
+* central-ledger’s server IP address could not be found.
- ERR\_NAME\_NOT\_RESOLVED\`
+ ERR_NAME_NOT_RESOLVED
Resolved by:
- * Verify that a helm chart\(s\) was installed by executing
+ * Verify that a helm chart(s) was installed by executing
```bash
helm list
A new release for a repository is made when when a significant change such as a
At of March 6th 2019, the active releases for core central services are as below
-* helm: **v5.2.0**
-* central-ledger: v5.3.0
-* ml-api-adapter: v5.2.1
-* central-settlement: v5.2.0
-* central-event-processor: v5.3.0
-* email-notifier: v5.3.0
+* Helm: [](https://github.com/mojaloop/helm/releases)
+* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
+* Ml-API-Adapter: [](https://github.com/mojaloop/ml-api-adapter/releases)
+* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
+* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
+* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+# Account Lookup Service
+
+The Account Lookup Service **(ALS)** _(refer to section `6.2.1.2`)_ as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) implements the following use-cases:
+
+* Participant Look-up
+* Party Look-up
+* Manage Participants Registry information
+ * Adding Participant Registry information
+ * Deleting Participant Registry information
+
+Use-cases that have been implemented over and above for Hub Operational use:
+* Admin Operations
+ * Manage Oracle End-point Routing information
+ * Manage Switch End-point Routing information
+
+## 1. Design Considerations
+
+### 1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+
+The routing configuration will be based on the following:
+* PartyIdType - See section `7.5.6` of the Mojaloop Specification
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+* isDefault - Indicator that a specific Oracle is the default provider for a specific PartyIdType. Note that there can be many default Oracles, but there can only be a single Oracle default for a specific PartyIdType. The default Oracle for a specific PartyIdType will only be selected if the originating request does not include a Currency filter.
+
+### 1.2 ALS Oracle
+The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+
+## 2. Participant Lookup Design
+
+### 2.1 Architecture overview
+
+
+_Note: The Participant Lookup use-case similarly applies to for a Payee Initiated use-case such as transactionRequests. The difference being that the Payee is the initiation in the above diagram._
+
+### 2.2 Sequence diagram
+
+#### 2.2.1 GET Participant
+
+[Sequence Diagram for GET Participants](als-get-participants.md)
+
+#### 2.2.2 POST Participant
+
+[Sequence Diagram for POST Participants](als-post-participants.md)
+
+## 3. Party Lookup Design
+
+### 3.1 Architecture overview
+
+
+### 3.2 Sequence diagram
+
+#### 3.2.1 GET Parties
+
+[Sequence Diagram for GET Parties](als-get-parties.md)
+
+## 4. Database Design
+
+### 4.1 ALS Database Schema
+
+#### Notes
+- `partyIdType` - Values are currently seeded as per section _`7.5.6`_ [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}).
+- `currency` - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+- `endPointType` - Type identifier for the end-point (e.g. `URL`) which provides flexibility for future transport support.
+- `migration*` - Meta-data tables used by Knex Framework engine.
+- A `centralSwitchEndpoint` must be associated to the `OracleEndpoint` by the Admin API upon insertion of a new `OracleEndpoint` record. If the `centralSwitchEndpoint` is not provided as part of the API Request, then it must be defaulted.
+
+
+
+* [Acount Lookup Service DBeaver ERD](./assets/entities/AccountLookupDB-schema-DBeaver.erd)
+* [Acount Lookup Service MySQL Workbench Export](./assets/entities/AccountLookup-ddl-MySQLWorkbench.sql)
+
+## 5 ALS Oracle Design
+
+Detail design for the Oracle is out of scope for this document. The Oracle design and implementation is specific to each Oracle's requirements.
+
+### 5.1 API Specification
+
+Refer to **ALS Oracle API Specification** in the [API Specifications](../../api/README.md#als-oracle-api) section.
+# GET Participants
+
+## Sequence Diagram
+
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
+# GET Parties
+
+## Sequence Diagram
+
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
+```
+# Sequence Diagram for POST Participants
+
+## Notes
+- Operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
+ - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+- Duplicate POST Requests with matching TYPE and CURRENCY will be considered an __update__ operation. The existing record must be completely **replaced** in its entirety.
+
+## Sequence Diagram
+
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
+```
/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep b/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A4. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A5. AltA5. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A5. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>A4. AltA4. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A3. Lookup Switch Service End-points based on <idType>
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A5. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA3. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0 Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Endpoint Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP --> ALS_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}.\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details.
+ deactivate ALS_API
+
+ alt oracleEndpoint match found
+
+ '********************* Fetch Oracle Routing Config - START ************************
+ group #99cef7 IMPLEMENTATION: Get Oracle Routing Config Sequence [CACHED]
+
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {TYPE}. \nError code: 200x
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
+ if lookup for Oracle based on {CURRENCY} if and only if {CURRENCY} is provided
+ SELECT oe.value, oe.switchEndpointId, et.type as endpointType FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ inner join account_lookup.switchEndpoint as sw on oe.switchEndpointId = sw.switchEndpointId
+ where cu.currencyId = '{CURRENCY}'
+ and pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true
+ and sw.isActive = true;
+ else lookup default Oracle if no {CURRENCY} is provided:
+ SELECT oe.value, oe.switchEndpointId, et.type as endpointType FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ inner join account_lookup.switchEndpoint as sw on oe.switchEndpointId = sw.switchEndpointId
+ where pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true
+ and sw.isActive = true
+ and oe.isDefault = true;
+ end if
+ end note
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for oracleEndpoint. \nError code: 200x
+
+ activate ALS_DB
+
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ switchEndpoint
+ endpointType
+ partyIdType
+ currency
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set.
+
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of oracleEndpoint for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Throw Error code: 3200 if list of oracleEndpoint results is empty.
+
+ end group
+ '********************* Fetch Oracle Routing Information - END ************************
+
+ '********************* Request Participant Information from Oracle - START ************************
+ group #599dd1 IMPLEMENTATION: Request Participant Information from Oracle Sequence
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}. \nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information.
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Request Participant Information from Oracle - END ************************
+
+ end group
+
+ '********************* Get Switch Config Information - START ************************
+ group #73a2c6 IMPLEMENTATION: Get Switch Routing Config Sequence [CACHED]
+
+ alt if {switchEndpointId} has been attained from 'REFERENCE: Get Oracle Routing Config Sequence' or if list of oracleEndpoint results is NOT empty
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Switch Routing information. \nError code: 200x
+
+ hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
+ select sw.value, et.type as endpointType from account_lookup.switchEndpoint as sw
+ inner join account_lookup.endpointType as et on sw.endpointTypeId = et.endpointTypeId
+ where switchEndpointId = {switchEndpointId from 'IMPLEMENTATION: Get Oracle Routing Config Sequence'};
+ end note
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for switchEndpoint. \nError code: 200x
+
+ activate ALS_DB
+
+ hnote over ALS_DB #lightyellow
+ switchEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return switchEndpoint result set.
+
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: Return switchEndpoint results
+ else
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Throw Error code: 2000
+ end alt
+
+ end group
+ '********************* Get Switch Config Information - END ************************
+
+ '********************* Get PayerFSP Callback End-points - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
+
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}?currency={CURRENCY}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occurred
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ deactivate ALS_API
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0 Get Party Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+actor "Payee FSP" as PAYEE_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Participant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+'entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Parties FSP DAO" as ALS_PARTIES_FSP_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+participant ALS_PARTIES_FSP_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Financial Service Provider" #LightGrey
+participant PAYEE_FSP
+end box
+
+' START OF FLOW
+
+group Get Party Details
+ PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}. \nResponse code: 202 \nError code: 200zx, 300x, 310x, 320x
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details.
+ deactivate ALS_API
+
+ alt oracleEndpoint match found & parties information retrieved
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config. \nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config. \nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ end ref
+
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+ '********************* Validate Participant - START ************************
+
+ group Validate FSPIOP-Source Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request FSPIOP-Source participant information. \nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{FSPIOP-Source}. \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return FSPIOP-Source participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return FSPIOP-Source participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate FSPIOP-Source participant. \nError code: 320x
+ end group
+
+ '********************* Validate Participant - END ************************
+ |||
+
+ '********************* Request Oracle Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information for PayeeFSP. \nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Request Participant Information from Oracle Sequence]]
+ end ref
+
+ '********************* Request Oracle Participant Information - END ************************
+ |||
+ '********************* Request Parties Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTIES_FSP_DAO: Request Parties information from FSP.\nError code: 200x
+
+ activate ALS_PARTIES_FSP_DAO
+ ALS_PARTIES_FSP_DAO --> PAYEE_FSP: Parties Callback to Destination: GET - /parties/{TYPE}/{ID}?currency={CURRENCY}. \nResponse code: 202 \nError code: 200x, 310x, 320x
+ deactivate ALS_PARTIES_FSP_DAO
+ activate PAYEE_FSP
+
+ PAYEE_FSP --> ALS_API: Callback with Participant Information: PUT - /parties/{TYPE}/{ID}?currency={CURRENCY}. \nError code: 200x, 300x, 310x, 320x
+ deactivate PAYEE_FSP
+
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process Participant Callback Information for PUT
+ deactivate ALS_API
+
+ '********************* Request Parties Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_PUT`
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Send Participant Information to PayerFSP.
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback with Parties Information: PUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR`
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ deactivate ALS_API
+ else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
+
+ '********************* Get PayeeFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayeeFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayeeFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayeeFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR`
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
+ activate ALS_API
+ ALS_API --> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ deactivate ALS_API
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.1 Post Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Participant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
+ end note
+ PAYER_FSP --> ALS_API: Request to add participant's FSP details POST - /participants. \nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+' hnote over ALS_API #lightyellow
+' "POST /participant" operation only supports requests which contain:
+' - All Participant's FSPs match the FSPIOP-Source
+' - All Participant's TYPEs are the same
+' - All Participant's will be of the same Currency
+' end note
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details.
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}.
+
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
+
+ loop for keys in ParticipantMap -> TYPE
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config. \nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Oracle Routing Config Sequence]]
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ |||
+
+ '********************* Fetch Oracle Routing Information - END ************************
+
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config. \nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - [[https://docs.mojaloop.live/mojaloop-technical-overview/account-lookup-service/als-get-participants.html Get Switch Routing Config Sequence]]
+ end ref
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant
+ loop for Participant in ParticipantLis
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source. \nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same. \nError code: 3100
+
+ end loop
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}. \nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details POST - /participants. \nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details POST - /participants. \nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request.
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ '********************* Create Participant Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT`
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
+
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{requestId}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occurred
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR`
+
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+ end loop
+end
+@enduml
+-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64)
+--
+-- Host: 127.0.0.1 Database: account_lookup
+-- ------------------------------------------------------
+-- Server version 8.0.12
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `centralSwitchEndpoint`
+--
+
+DROP TABLE IF EXISTS `centralSwitchEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `centralSwitchEndpoint` (
+ `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`centralSwitchEndpointId`),
+ KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `centralSwitchEndpoint`
+--
+
+LOCK TABLES `centralSwitchEndpoint` WRITE;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `currency`
+--
+
+DROP TABLE IF EXISTS `currency`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `currency` (
+ `currencyId` varchar(3) NOT NULL,
+ `name` varchar(128) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`currencyId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `currency`
+--
+
+LOCK TABLES `currency` WRITE;
+/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `endpointType`
+--
+
+DROP TABLE IF EXISTS `endpointType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `endpointType` (
+ `endpointTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `type` varchar(50) NOT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`endpointTypeId`),
+ UNIQUE KEY `endpointtype_type_unique` (`type`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `endpointType`
+--
+
+LOCK TABLES `endpointType` WRITE;
+/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `migration`
+--
+
+DROP TABLE IF EXISTS `migration`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `batch` int(11) DEFAULT NULL,
+ `migration_time` timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration`
+--
+
+LOCK TABLES `migration` WRITE;
+/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
+/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `migration_lock`
+--
+
+DROP TABLE IF EXISTS `migration_lock`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration_lock` (
+ `index` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `is_locked` int(11) DEFAULT NULL,
+ PRIMARY KEY (`index`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration_lock`
+--
+
+LOCK TABLES `migration_lock` WRITE;
+/*!40000 ALTER TABLE `migration_lock` DISABLE KEYS */;
+INSERT INTO `migration_lock` VALUES (1,0);
+/*!40000 ALTER TABLE `migration_lock` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oracleEndpoint`
+--
+
+DROP TABLE IF EXISTS `oracleEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oracleEndpoint` (
+ `oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `partyIdTypeId` int(10) unsigned NOT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
+ `currencyId` varchar(255) DEFAULT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`oracleEndpointId`),
+ KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
+ KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
+ KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
+ KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
+ CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
+ CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
+ CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oracleEndpoint`
+--
+
+LOCK TABLES `oracleEndpoint` WRITE;
+/*!40000 ALTER TABLE `oracleEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oracleEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `partyIdType`
+--
+
+DROP TABLE IF EXISTS `partyIdType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `partyIdType` (
+ `partyIdTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL,
+ `description` varchar(512) NOT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`partyIdTypeId`),
+ UNIQUE KEY `partyidtype_name_unique` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `partyIdType`
+--
+
+LOCK TABLES `partyIdType` WRITE;
+/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
+/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2019-03-18 17:52:06
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/mojaloop-technical-overview/central-ledger/.gitkeep b/mojaloop-technical-overview/central-ledger/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-ledger/assets/.gitkeep b/mojaloop-technical-overview/central-ledger/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/.gitkeep b/mojaloop-technical-overview/central-settlements/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/assets/.gitkeep b/mojaloop-technical-overview/central-settlements/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
-
+
## Helm Hierarchy of Values
-
+
1. Install Calibre: https://calibre-ebook.com/download
-2. npm install svgexport -g"
-
-3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
-
-4. npm install canvas
-
-5. Run `npm run gitbook:export:pdf`
+2. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
A file `book.pdf` will be generated in the root directory
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
-- Export PDF does not contain a
## Docker
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ pytho
WORKDIR /opt/gitbook/repo
-RUN npm install
-#
-#RUN apk del build-dependencies
+RUN npm ci
-EXPOSE 8989
-
-RUN npm run gitbook:install
+RUN apk del build-dependencies
-RUN npm run gitbook:build
+EXPOSE 8989
-CMD npm run gitbook:serve
+CMD npm run docs:serve
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
- * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
- * [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
- * [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
- * [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
* [ALS Oracle](api/als-oracle-api-specification.md)
-# API Specifications
+# APIs Specifications
## Mojaloop API
-Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
-
-* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
-* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
+Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
+* [Mojaloop API Specification](./mojaloop-api-specification.md)
## ALS Oracle API
-Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
-
-* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
-* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
-Notes:
-* ALS Oracle API is based on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
- - Operations follow traditional REST API paradigms more strictly.
- - Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
- - `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- - `GET /participants` response body returns a list of Participants, containing `currency`.
- - `POST /participants` request body includes the `currency` as part of each record.
+* [ALS Oracle API Specification](./mojaloop-api-specification.md)
+
\ No newline at end of file
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve the PUT end-point)A1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 8. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve both the POST and PUT end-points)A1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A7. User Lookup GET /parties/<idType>/<id>A7. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A9. User Lookup PUT /parties/<idType>/<id>A9. User Lookup <br>PUT /parties/<idType>/<id>A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0 Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Oracle Registry Store" as ORACLE_STORE
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Internal/External Oracle Data Store/Service" #LightGrey
+participant ORACLE_STORE
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP -> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_API
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details. \nError code: 3200
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
+ end alt
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ORACLE_API
+
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information. \nError code: 3200
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information. \nError code: 3200
+
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}?currency={CURRENCY}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occured
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 3200
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.0 Get Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+entity "Pathfinder Service" as PATHFINDER_SERVICE
+actor "GSMA Pathfinder" as PATHFINDER
+actor "Payee FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+box "Pathfinder Library" #LightBlue
+participant PATHFINDER_SERVICE
+end box
+
+participant PATHFINDER
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Get Party's Details
+ PAYER_FSP -> ALS: Request to get party's details \nGET - /parties/{Type}/{ID}
+ activate ALS
+ ALS -> PARTIES_HANDLER: Get Party by ID and Type \n(PartiesByTypeAndID)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Source Party's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Source Party Error Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Party Error Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Party Error Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> PATHFINDER_SERVICE: Query Party ID
+ activate PATHFINDER_SERVICE
+ PATHFINDER_SERVICE -> PATHFINDER: Query Party
+ activate PATHFINDER
+ PATHFINDER -> PATHFINDER_SERVICE: Return Mobile Country Code \nand Network Code
+ deactivate PATHFINDER
+ PATHFINDER_SERVICE -> PARTIES_HANDLER: Return MCC & MNC
+ deactivate PATHFINDER_SERVICE
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Participant Name\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Participant Name \n(getParticipantNameFromMccMnc)
+ activate DB
+ hnote over DB #lightyellow
+ participantMno
+ end note
+ DB --> PARTICIPANT_DAO: Return Participant Name
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Participant Name
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant with Updated Headers
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 202
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.1 Put Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "PAYER_FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+actor "Payee_FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Put Party's Details
+ PAYER_FSP -> ALS: Callback for the Get Party's request \nPUT - /parties/{Type}/{ID}
+ note right of PAYER_FSP #yellow
+ Message:
+ party: {
+ partyIdInfo: {
+ “partyIdType”: “PERSONAL_ID”,
+ “partyIdentifier”: “1551212”,
+ “partySubIdOrType”: “License”,
+ “fspId”: “1234”
+ },
+ merchantClassificationCode: 4321,
+ “name”: “Justin Trudeau”,
+ “personalInfo”: {
+ “complexName”: {
+ “firstName”: “Justin”,
+ “middleName”: “Pierre”,
+ “lastName”: “Trudeau”
+ },
+ “dateOfBirth”: “1971-12-25”
+ }
+ }
+ end note
+ activate ALS
+ ALS -> PARTIES_HANDLER: Put Party by ID and Type \n(PartiesByTypeAndID2)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 200
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
-# Changelog
-[](https://github.com/mojaloop/documentation/releases)
-
-{% changelog %}
- {% date %}
- {% message %}
- {% files %}
- {% badge %}
- {% filename link=true %}
- {% changes truncate=true %}
- {% endfiles %}
-{% endchangelog %}
+# 2019-03-08
+* Updated to use gitbook-cli
+# Mojaloop Setup for Ubuntu
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+## Setup Introduction
+
+This document will provide guidelines to a technical capable resources to setup, deploy and configure the Mojaloop applications on a local environment, utilizing Docker, Kubernetes and HELM charts.
+
+* [Environment Setup](environment-setup-linux.md#1-environment-setup)
+ * [Docker](environment-setup-linux.md#1-docker)
+ * [Kubernetes](environment-setup-linux.md#2-kubernetes)
+ * [MicroK8S](environment-setup-linux.md#21-microk8s)
+ * [Kubernetes Dashboard](environment-setup-linux.md#22-kubernetes-dashboard)
+ * [Helm](environment-setup-linux.md#3-helm)
+ * [Helm CLI and Tiller](environment-setup-linux.md#31-helm-cli-and-tiller)
+ *[Incubator](environment-setup-linux.md#32-incubator)
+ *[Nginx-ingress](environment-setup-linux.md#33-nginx-ingress)
+ *[Helm Configuration](environment-setup-linux.md#34-helm-configuration)
+ *[Helm Chart Installation](environment-setup-linux.md#35-helm-chart-installation)
+ * [Postman](environment-setup-linux.md#4-postman)
+ * [Installing Postman](environment-setup-linux.md#41-installing-postman)
+ * [Setup Postman](environment-setup-linux.md#42-setup-postman)
+* [Errors During Setup](environment-setup-linux.md#5-errors-on-setup)
+
+The tool set to be deployed as part of the deployment process. The below table is just a point of reference.
+
+|Tool|Required/Optional|Description|Install Info|Tutorials|
+|---|---|---|---|---|
+|Docker|Required|Docker Engine and CLI Client.Local Kubernetes single node cluster.|[https://docs.docker.com/install](https://docs.docker.com/install)|[Getting Started with Docker](https://docs.docker.com/get-started/)|
+|Kubectl|Required|Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.|[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)Docker Kubernetes Install (as per this guide)`sudo snap install kubectl --classic`|[kubernetes tutorials](https://kubernetes.io/docs/tutorials/)|
+|MicroK8s|Required|Kubernetes for workstations and appliances.A single package of k8s that installs on Linux.|[https://microk8s.io/docs/](https://microk8s.io/docs/)`snap install microk8s --classic`|Apart from the Kubernetes tutorial, https://microk8s.io/ contains a short video clip under the Working with MicroK8s section that is worth looking at.|
+|Kubectx|Optional(useful tool)|Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.|[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)`sudo apt install kubectx`|https://github.com/ahmetb/kubectx|
+|Kubetail|Optional(useful tool)|Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running `kubectl logs -f` but for multiple pods.Example usage `kubetail moja.* -n demo`|https://github.com/johanhaleby/kubetail||
+|Helm|Required|Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application|[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)`sudo snap install helm --classic`|[Helm Documents](https://helm.sh/docs/)|
+|Postman|Required|Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.|[https://www.getpostman.com/apps](https://www.getpostman.com/apps)|[Postman Learning Centre](https://learning.getpostman.com/?_ga=2.190121065.394495230.1553087789-183318539.1552904892)|
+
+
+## 1 Environment Setup
+
+This environment setup was validated on:
+ * 64-bit version of Ubuntu Bionic 18.04(LTS).
+ * This guide is based on Ubuntu 18.04.2 (bionic) on a x86_64 desktop with 8 CPU's and 16GB RAM.
+
+### 1 Docker
+
+Dockerd is deployed as part of the MicroK8s installation. The docker daemon used by MicroK8s is listening on unix:///var/snap/microk8s/current/docker.sock. You can access it with the **microk8s.docker** command.
+
+### 2 Kubernetes
+
+This section will guide the reader through the deployment process to setup Kubernetes.
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 2.1 MicroK8S
+The quickest way to get started is to install directly from the snap store.
+
+Don't have the snap command? [Install snapd first](https://snapcraft.io/docs/core/install).
+
+1. Installing MicroK8s from snap:
+ ```bash
+ snap install microk8s --classic
+ ```
+
+2. Verify MicroK8s is installed and available:
+ ```bash
+ microk8s.status
+ ```
+
+3. During installation you can use the --wait-ready flag to wait for the kubernetes services to initialise:
+ ```bash
+ microk8s.status --wait -ready
+ ```
+
+4. To avoid colliding with a **kubectl** already installed and to avoid overwriting any existing Kubernetes configuration file, MicroK8s adds a **microk8s.kubectl** command, configured to exclusively access the new **MicroK8s** install.
+ ```bash
+ microk8s.kubectl get services
+ ```
+
+5. If you do not have a **kubectl** installed, you can alias **microk8s.kubectl** to **kubectl**:
+ ```bash
+ snap alias microk8s.kubectl kubectl
+ ```
+
+ Reverting it at any time:
+ ```bash
+ snap unalias kubectl
+ ```
+
+ We will stick with the standard command of prefixing with **microk8s.** for this guide.
+
+6. If you already have **kubectl** installed and would like to use it to access the **MicroK8s** deployment:
+ ```bash
+ microk8s.kubectl config view --raw > $HOME/.kube/config
+ ```
+
+7. MicroK8s is a barebones upstream installation of Kubernetes. Additional services that are required will need to be enabled. We need the kube-dns and the dashboard:
+ ```bash
+ microk8s.enable dns dashboard
+ ```
+
+8. As with **kubectl** if you don't have docker you can set an alias;
+ ```bash
+ sudo snap alias microk8s.docker docker
+ ```
+
+ Undo the alias;
+ ```bash
+ sudo snap unalias docker
+ ```
+
+9. We will apply the native microK8s commands by prefix commands **microk8s.**:
+ ```bash
+ microk8s.docker ps
+ ```
+
+10. View the current context:
+ ```bash
+ microk8s.kubectl config get-contexts
+ ```
+
+11. Make sure the current context is **microk8s**. If not, set it as the current context:
+ ```bash
+ kubectl config use-context microk8s
+ ```
+
+#### 2.2 Kubernetes Dashboard
+
+1. Deploy the Kubernetes dashboard:
+ ```bash
+ microk8s.kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+2. Verify Kubernetes Dashboard is active:
+ ```bash
+ microk8s.kubectl get pod -—namespace=kube-system | grep dashboard
+ ```
+
+3. Start proxy for local UI in new terminal:
+ ```bash
+ microk8s.kubectl proxy ui
+ ```
+
+4. Obtaining the dashboard-token name:
+ ```bash
+ microk8s.kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+5. Retrieve the service-account-token:
+ ```bash
+ microk8s..kubectl -n tube-system describe secrets/kubernetes-dashboard-token-XXXXXX
+ ```
+
+6. Select **Token**. Generate a token to use there by:
+
+ In a new terminal
+ ```bash
+ microk8s.kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+7. The token to use is shown on the last line of the output of that command.
+ ```bash
+ microk8s.kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+8. The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+### 3 Helm
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+#### 3.1 Helm CLI and Tiller
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster:
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running:
+ ```bash
+ microk8s.kubectl -n tube-system get po | grep tiller
+ ```
+
+#### 3.2 Incubator
+
+1. Add the incubator. This is required to resolve Helm Chart dependencies required by Mojaloop charts:
+ ```bash
+ sudo helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
+ ```
+
+#### 3.3 Nginx-ingress
+
+1. Install nginx-ingress for load balancing & external access
+ ```bash
+ sudo helm —-namespace kube-public install stable/nginx-ingress
+ ```
+
+#### 3.4 Helm Configuration
+
+1. Add mojaloop repo to your Helm config \(optional\):
+ ```bash
+ sudo helm repo add Mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+2. Update helm repositories
+ ```bash
+ sudo helm repo update
+ ```
+
+3. Add the following to your /ect/hosts
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+#### 3.5 Helm Chart Installation
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
+
+1. Lets start by **listing** the current helm charts deployed
+ ```bash
+ helm list
+ ```
+
+2. If you would like to **delete** a deployed helm chart
+ ```bash
+ sudo helm del --purge moja
+ ```
+
+ \*Note: for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
+
+3. To **install** Mojaloop chart\(s\)
+
+ It might be required to execute `helm install` and `helm upgrade` under `sudo`.
+
+4. To install the **full Mojaloop** project
+ ```bash
+ sudo helm install --namespace=demo --name=moja mojaloop/mojaloop
+ ```
+
+ Alternative directly from the repository:
+ ```bash
+ sudo helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
+ ```
+
+5. **or** install a **specific Mojaloop** chart eg. Central-ledger
+ ```bash
+ sudo helm install --namespace=demo --name=moja mojaloop/centralledger
+ ```
+
+ Alternative directly from the repository:
+ ```bash
+ sudo helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
+ ```
+
+6. To upgrade Mojaloop chart\(s\)
+
+ /* Note: 'v5.1.1' is an example value.
+ ```bash
+ sudo helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
+ ```
+
+7. To upgrade a specific chart eg. Central-ledger
+ ```bash
+ sudo helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
+ ```
+
+8. Test system health in your browser after installation
+
+ ml-api-adapter health test
+ ```http request
+ http://ml-api-adapter/health
+ ```
+
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+### 4 Postman
+
+Postman is used to send requests and receive responses.
+
+#### 4.1 Installing Postman
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+```bash
+wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
+sudo tar -xzf postman.tar.gz -C /opt
+rm postman.tar.gz
+sudo ln -s /opt/Postman/Postman /usr/bin/postman
+```
+
+#### 4.2 Setup Postman
+
+1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+2. Open **Postman**
+3. Click **Import** and then **Import File**
+4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
+5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+6. Click **Import** and then **Import File**
+7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+8. In the imported collection, navigate to the _central\_ledger_ directory
+
+### 5 Errors On Setup
+Errors encountered and the solutions to be documented within this section.
\ No newline at end of file
+# Mojaloop local environment setup for Mac
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+## Deployment and Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+* [Local Deployment](environment-setup-mac.md#local-deployment)
+ * [Kubernetes](environment-setup-mac.md#1-kubernetes)
+ * [Kubernetes Installation with Docker](environment-setup-mac.md#11-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](environment-setup-mac.md#12-kubernetes-environment-setup)
+ * [Kubernetes Dashboard](environment-setup-mac.md#12-kubernetes-dashboard)
+ * [Helm](environment-setup-mac.md#2-helm)
+ * [Helm configuration](environment-setup-mac.md#21-helm-configuration)
+ * [Postman](environment-setup-mac.md#3-postman)
+ * [Installing Postman](environment-setup-mac.md#31-installing-postman)
+ * [Setup Postman](environment-setup-mac.md#32-setup-postman)
+* [Errors During Setup](environment-setup-mac.md#4-errors-on-setup)
+
+
+## Local Deployment
+
+The tool set to be deployed as part of the deployment process.
+
+|Tool|Required/Optional|Description|Install Info|Tutorials|
+|---|---|---|---|---|
+|Docker|Required|Docker Engine and CLI Client.Local Kubernetes single node cluster.|[https://docs.docker.com/install](https://docs.docker.com/install)|[Getting Started with Docker](https://docs.docker.com/get-started/)|
+|Kubectl|Required|Kubernetes CLI for Kubernetes Management.Note Docker installs this part of Kubernetes install.|[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl) Docker Kubernetes Install (as per this guide)`brew install kubernetes-cli`|[kubernetes tutorials](https://kubernetes.io/docs/tutorials/)|
+|Kubectx|Optional(useful tool)|Kubernetes CLI for Kubernetes Context Management Helper.Note Docker installs this as part of Kubernetes install.|[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)`brew install kubectx`|https://github.com/ahmetb/kubectx|
+|Kubetail|Optional(useful tool)|Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running `kubectl logs -f` but for multiple pods.Example usage `kubetail moja.* -n demo`|https://github.com/johanhaleby/kubetail||
+|Helm|Required|Helm helps you manage Kubernetes applications.Helm charts help you define, install and upgrade even the most complex Kubernetes application|[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)`brew install kubernetes-helm`|[Helm Documents](https://helm.sh/docs/)|
+|Postman|Required|Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.|[https://www.getpostman.com/apps](https://www.getpostman.com/apps)|[Postman Learning Centre](https://learning.getpostman.com/?_ga=2.190121065.394495230.1553087789-183318539.1552904892)|
+
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+### 1 Kubernetes
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 1.1 Kubernetes Installation with Docker
+
+* **kubectl** Complete set of installation instruction are available [here](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
+
+ ```bash
+ brew install kubernetes-cli
+ ```
+ To verify if the installation was successful, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+To install Kubernetes with Docker, follow the steps below;
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
+
+
+
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
+
+
+
+#### 1.2 Kubernetes environment setup:
+
+1. List the current Kubernetes context;
+ ```bash
+ kubectl config get-contexts
+ ```
+
+ **or**
+ ```bash
+ kubectx
+ ```
+2. Change your Contexts;
+ ```bash
+ kubectl config use-context docker-for-desktop
+ ```
+
+ **or**
+ ```bash
+ kubectx docker-for-desktop
+ ```
+
+#### 1.2 Kubernetes Dashboard:
+
+1. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+2. Verify Kubernetes Dashboard;
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+
+3. Start proxy for local UI in new terminal;
+ ```bash
+ kubectl proxy ui
+ ```
+
+4. Open URI in default browser
+ ```bash
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+
+ Select **Token**. Generate a token to use there by:
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+ The token to use is shown on the last line of the output of that command.
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+### 2 Helm
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+#### 2.1 Helm configuration
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster;
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running;
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+
+3. Add mojaloop repo to your Helm config \(optional\);
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts;
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+5. Update helm repositories;
+ ```bash
+ helm repro update
+ ```
+
+6. Install nginx-ingress for load balancing & external access;
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+7. Add the following to your /ect/hosts;
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+8. Test system health in your browser after installation. This will only work if you have an active helm chart deployment running.
+ ml-api-adapter health test
+ ```https request
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+ ```
+
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+### 3 Postman
+
+Postman is used to send requests and receive responses.
+
+#### 3.1 Installing Postman
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+#### 3.2 Setup Postman
+
+1. Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+2. Open **Postman**
+3. Click **Import** and then **Import File**
+4. Select the _Mojaloop.postman\_collection.json_ file you downloaded
+5. You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+6. Click **Import** and then **Import File**
+7. Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+8. In the imported collection, navigate to the _central_ledger_ directory
+
+### 4 Errors On Setup
+Errors encountered and the solutions to be documented within this section.
+# Mojaloop Deployment
+The document is intended for an audience with a stable technical knowledge and would like to setup an environment for development, testing and contributing to the Mojaloop project.
+
+## Deployment and Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+ * [Software List](mojaloop-deployment.md#1-software-list)
+ * [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](mojaloop-deployment.md#2-local-deployment-and-testing-tools)
+ * [MAC environment](mojaloop-deployment.md#21-mac-environment)
+ * [LINUX environment](mojaloop-deployment.md#21-linux-environment)
+ * [Errors On Setup](mojaloop-deployment.md#3-errors-on-setup)
+
+## 1 Software List
+
+Before proceeding, please have a look at [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations) to insure the minimum resource requirements are available.
+
+
+### 1.1 Deployment Recommendations
+
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+**Resources Requirements:**
+
+* Control Plane \(i.e. Master Node\)
+ ```https request
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+ ```
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
+
+* ETCd Plane:
+ ```https request
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+ ```
+
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
+
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+### 2 Local Deployment and Testing Tools
+
+##### 2.1. MAC environment
+ For Mac, please follow the [Environment Setup Mac](environment-setup-mac.md) document.
+
+##### 2.1. LINUX environment
+ For Linux, please follow the [Environment Setup Linux](environment-setup-linux.md) document.
+
+### 3 Errors On Setup
+
+* \`central-ledger’s server IP address could not be found.
+
+ ERR\_NAME\_NOT\_RESOLVED\`
+
+ Resolved by:
+
+ * Verify that a helm chart\(s\) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation) section to install a chart.
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane (i.e. Master Node)
+* Control Plane \(i.e. Master Node\)
- [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+ \`\`\`http request
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- * 3x Master Nodes for future node scaling and HA (High Availability)
+ \`\`\`
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
* ETCd Plane:
+ \`\`\`http request
+
[https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- * 3x ETCd nodes for HA (High Availability)
+ \`\`\`
-* Compute Plane (i.e. Worker Node):
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
TBC once load testing has been concluded. However the current general \*recommended size:
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
+
**Ubuntu** continue from here
or
8. Test system health in your browser after installation
- - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
- - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
+ ml-api-adapter health test
+
+ \`\`\`http request
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+
+ ```text
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
### 2.2 Helm
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* central-ledger’s server IP address could not be found.
+* \`central-ledger’s server IP address could not be found.
- ERR_NAME_NOT_RESOLVED
+ ERR\_NAME\_NOT\_RESOLVED\`
Resolved by:
- * Verify that a helm chart(s) was installed by executing
+ * Verify that a helm chart\(s\) was installed by executing
```bash
helm list
A new release for a repository is made when when a significant change such as a
At of March 6th 2019, the active releases for core central services are as below
-* Helm: [](https://github.com/mojaloop/helm/releases)
-* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
-* Ml-API-Adapter: [](https://github.com/mojaloop/ml-api-adapter/releases)
-* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
-* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
-* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
+* helm: **v5.2.0**
+* central-ledger: v5.3.0
+* ml-api-adapter: v5.2.1
+* central-settlement: v5.2.0
+* central-event-processor: v5.3.0
+* email-notifier: v5.3.0
+# Standards
+
+## Standards for adopting an Open Source contribution into Mojaloop
+
+This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
+
+### Prerequisites
+
+1. The contribution should be in-line with the LevelOne Principles
+2. Basic guidelines regarding status of the contribution \(Code-base / Standards / Designs / Specifications\)
+3. Basic documentation to get started
+
+### Guidelines regarding adoption
+
+1. Create a private repo on the Mojaloop GitHub organization
+2. Have a sub-team of the DA take a look to make sure its portable \(to OSS\) - aligns with L1P principles, etc, and ensure design is in line with standards
+3. Check Licensing
+4. Assess Performance impact
+5. Create action items \(stories\) to update naming, remove/sanitize any items that are not generic
+6. Configuration for 'modes of operation'
+7. Enable CI/CD pipeline
+
+# Creating new Features
+
+## Fork
+
+Fork the Mojaloop repository into your own personal space. Ensure that you keep the `master` branch in sync.
+
+Refer to the following documentation for more information: [https://help.github.com/articles/fork-a-repo/](https://help.github.com/articles/fork-a-repo/)
+
+1. Clone repo using Git Fork button \(refer to the above documentation for more information\)
+2. Clone your forked repo: `git clone https://github.com//.git`
+3. Synchronise your forked repo with Mojaloop
+
+ Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
+
+ You should now see that you have two remotes:
+
+ ```bash
+ git remote -v
+ origin https://github.com//.git (fetch)
+ origin https://github.com//.git (push)
+ mojaloop https://github.com/mojaloop/.git (fetch)
+ mojaloop https://github.com/mojaloop/.git (push)
+ ```
+
+4. To sync to your current branch: `git pull mojaloop ` This will merge any changes from Mojaloop's repo into your forked repo.
+5. Push the changes back to your remote fork: `git push origin `
+
+## Creating a Branch
+
+Create a new branch from the `master` branch with the following format: `/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
+
+1. Create and checkout the branch: `git checkout -b /`
+2. Push the branch to your remote: `git push origin /`
+
+Where `` can be one of the following:
+
+| branchType | Description |
+| :--- | :--- |
+| feature | Any new or maintenance features that are in active development. |
+| hotfix | A hotfix branch is for any urgent fixes. |
+| release | A release branch containing a snapshot of a release. |
+| backup | A temporary backup branch. Used normally during repo maintenance. |
+
+## Merge into Mojaloop Repo
+
+Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
+
+# Versioning of releases made for core Switch services
+
+This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
+
+### [Versioning Strategy](standards.md#versioning-strategy)
+
+### [Current versions](standards.md#current-version)
+
+### [Notes](standards.md#notes)
+
+## Versioning Strategy
+
+1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
+2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
+3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
+
+## Notes
+
+1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
+2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+## Pull Request Process
+
+It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
+
+## Code of conduct
+
+We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
+
+## Licensing
+
+See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+# Central-Ledger Services
+
+The Account Lookup Service _(refer to section `6.2.1.2`)_ as per the [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) implements the following use-cases:
+
+* Participant Look-up
+* Party Look-up
+* Manage Participants Registry information
+ * Adding Participant Registry information
+ * Deleting Participant Registry information
+* Admin Operations
+ * Manage Oracle End-point Routing information
+
+## 1. Design Considerations
+
+### 1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+
+The routing configuration will be based on the following:
+* PartyIdType - See section `7.5.6` of the Mojaloop Specification
+* PartyIdentifier - See section `7.3.24` of the Mojaloop Specification
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+
+### 1.2 ALS Oracle Service/Adapter
+The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+
+* [ALS Oracle Service v1 Interface Contract](../assets//InterfaceContracts/OracleServiceSwaggerv1.yaml)
+
+## 2. Participant Lookup Design
+
+### 2.1 Architecture overview
+
+
+### 2.2 Sequence diagram
+
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
+
+## 3. Party Lookup Design
+
+### 3.1 Architecture overview
+
+
+### 3.2 Sequence diagram
+
+Work in progress..
+
+
+## 4. Database Design
+
+### 4.1 ALS Database Schema
+
+Work in progress..
+
+### 4.2 Oracle Database Schema
+
+This is optional & is dependant on the Oracle's requirements & design.
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
-
+
## Helm Hierarchy of Values
-
+
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
# Changelog
+[](https://github.com/mojaloop/documentation/releases)
+
{% changelog %}
{% date %}
{% message %}
Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.d
## ALS Oracle API
-Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service/README.md)
* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
als:
spec:
version: v1.0
uri:
- doc: ../mojaloop-technical-overview/account-lookup-service.md
- api: https://github.com/mojaloop/documentation/blob/master/assets/InterfaceContracts/OracleServiceSwaggerv1.yaml
+ doc: /mojaloop-technical-overview/account-lookup-service/README.md
+ api: https://github.com/mojaloop/documentation/blob/master/api/assets/interface-contracts/oracleServiceSwaggerv1.yaml
+# Changelog
-# 2019-03-08
-* Updated to use gitbook-cli
+{% changelog %}
+ {% date %}
+ {% message %}
+ {% files %}
+ {% badge %}
+ {% filename link=true %}
+ {% changes truncate=true %}
+ {% endfiles %}
+{% endchangelog %}
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane \(i.e. Master Node\)
+* Control Plane (i.e. Master Node)
- \`\`\`http request
+ [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- \`\`\`
-
- * 3x Master Nodes for future node scaling and HA \(High Availability\)
+ * 3x Master Nodes for future node scaling and HA (High Availability)
* ETCd Plane:
- \`\`\`http request
-
[https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- \`\`\`
+ * 3x ETCd nodes for HA (High Availability)
- * 3x ETCd nodes for HA \(High Availability\)
-
-* Compute Plane \(i.e. Worker Node\):
+* Compute Plane (i.e. Worker Node):
TBC once load testing has been concluded. However the current general \*recommended size:
or
8. Test system health in your browser after installation
- ml-api-adapter health test
-
- \`\`\`http request
+ - ml-api-adapter health test - [http://ml-api-adapter.local/health](http://ml-api-adapter.local/health)
+ - central-ledger health test - [http://central-ledger.local/health](http://central-ledger.local/health)
- [http://ml-api-adapter/health](http://ml-api-adapter/health)
-
- ```text
- ___
- central-ledger health test
- ```http request
- http://central-ledger/health
- ```
### 2.2 Helm
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* You'll now need to import environment variables. For local testing, download this file [MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* \`central-ledger’s server IP address could not be found.
+* central-ledger’s server IP address could not be found.
- ERR\_NAME\_NOT\_RESOLVED\`
+ ERR_NAME_NOT_RESOLVED
Resolved by:
- * Verify that a helm chart\(s\) was installed by executing
+ * Verify that a helm chart(s) was installed by executing
```bash
helm list
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
The purpose of this document is to provide;
## Helm Hierarchy of Values
-
+
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
This component (or back-end systems) will also be responsible for the persistenc
### 2.1 Architecture overview

+_Note: The Participant Lookup use-case similarly applies to for a Payee Initiated use-case such as transactionRequests. The difference being that the Payee is the initiation in the above diagram._
+
### 2.2 Sequence diagram
#### 2.2.1 GET Participant
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger/README.md)
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
* [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
* [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
* [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements/README.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services/README.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
* [ALS Oracle](api/als-oracle-api-specification.md)
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+{
+ "swagger": "2.0",
+ "info": {
+ "version": "1.0",
+ "title": "Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service",
+ "description": "Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)",
+ "contact": {}
+ },
+ "basePath": "/",
+ "schemes": [],
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "paths": {
+ "/participants/{Type}/{ID}": {
+ "get": {
+ "description": "The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive",
+ "summary": "Look up participant information",
+ "tags": [
+ "participants"
+ ],
+ "operationId": "ParticipantsByTypeAndIDGet",
+ "deprecated": false,
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "accept",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Accept header field indicates the version of the API the client would like the server to use."
+ },
+ {
+ "name": "Type",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": "The type of lookup being requested, this can be MSISDN, bankAccount etc."
+ },
+ {
+ "name": "ID",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": "The ID related to the Type, if MSISDN then this is the mobile number being requested"
+ },
+ {
+ "name": "Currency",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "description": "The Currency code applicable to the ID being requested"
+ },
+ {
+ "name": "SubId",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "description": "The SubId related to the ID, or the Type"
+ },
+ {
+ "name": "content-type",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Content-Type header indicates the specific version of the API used to send the payload body."
+ },
+ {
+ "name": "date",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Date header field indicates the date when the request was sent."
+ },
+ {
+ "name": "fspiop-source",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature)."
+ },
+ {
+ "name": "x-forwarded-for",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For."
+ },
+ {
+ "name": "fspiop-destination",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes."
+ },
+ {
+ "name": "fspiop-encryption",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request."
+ },
+ {
+ "name": "fspiop-signature",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature."
+ },
+ {
+ "name": "fspiop-uri",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document."
+ },
+ {
+ "name": "fspiop-http-method",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ParticipantsTypeIDGetResponse"
+ },
+ "headers": {
+ "Content-Length": {
+ "type": "string"
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "401": {
+ "description": "Unauthorized - The request requires authentication in order to be processed.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "403": {
+ "description": "Forbidden - The request was denied and will be denied in the future.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "404": {
+ "description": "Not Found - The resource specified in the URI was not found.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "405": {
+ "description": "Method Not Allowed - An unsupported HTTP method for the request was used.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "406": {
+ "description": "Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "501": {
+ "description": "Not Implemented - The server does not support the requested service. The client should not retry.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ }
+ }
+ },
+ "put": {
+ "description": "The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).",
+ "summary": "Return participant information",
+ "tags": [
+ "participants"
+ ],
+ "operationId": "ParticipantsByTypeAndIDPut",
+ "deprecated": false,
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "Type",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": "The type of lookup being requested, this can be MSISDN, bankAccount etc."
+ },
+ {
+ "name": "ID",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": "The ID related to the Type, if MSISDN then this is the mobile number being requested"
+ },
+ {
+ "name": "content-type",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Content-Type header indicates the specific version of the API used to send the payload body."
+ },
+ {
+ "name": "date",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Date header field indicates the date when the request was sent."
+ },
+ {
+ "name": "fspiop-source",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature)."
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/ParticipantsTypeIDPutRequest"
+ }
+ },
+ {
+ "name": "accept",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The Accept header field indicates the version of the API the client would like the server to use."
+ },
+ {
+ "name": "x-forwarded-for",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For."
+ },
+ {
+ "name": "fspiop-destination",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes."
+ },
+ {
+ "name": "fspiop-encryption",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request."
+ },
+ {
+ "name": "fspiop-signature",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature."
+ },
+ {
+ "name": "fspiop-uri",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document."
+ },
+ {
+ "name": "fspiop-http-method",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document."
+ },
+ {
+ "name": "content-length",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int32",
+ "exclusiveMaximum": false,
+ "exclusiveMinimum": false,
+ "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "headers": {}
+ },
+ "400": {
+ "description": "Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "401": {
+ "description": "Unauthorized - The request requires authentication in order to be processed.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "403": {
+ "description": "Forbidden - The request was denied and will be denied in the future.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "404": {
+ "description": "Not Found - The resource specified in the URI was not found.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "405": {
+ "description": "Method Not Allowed - An unsupported HTTP method for the request was used.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "406": {
+ "description": "Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "501": {
+ "description": "Not Implemented - The server does not support the requested service. The client should not retry.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ }
+ }
+ },
+ "post": {
+ "description": "The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).",
+ "summary": "Create participant information",
+ "tags": [
+ "participants"
+ ],
+ "operationId": "ParticipantsByTypeAndIDPost",
+ "deprecated": false,
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "accept",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Accept header field indicates the version of the API the client would like the server to use."
+ },
+ {
+ "name": "Type",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": "The type of lookup being requested, this can be MSISDN, bankAccount etc."
+ },
+ {
+ "name": "ID",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": "The ID related to the Type, if MSISDN then this is the mobile number being requested"
+ },
+ {
+ "name": "content-type",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Content-Type header indicates the specific version of the API used to send the payload body."
+ },
+ {
+ "name": "date",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Date header field indicates the date when the request was sent."
+ },
+ {
+ "name": "fspiop-source",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature)."
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/ParticipantsTypeIDPutRequest"
+ }
+ },
+ {
+ "name": "x-forwarded-for",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For."
+ },
+ {
+ "name": "fspiop-destination",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes."
+ },
+ {
+ "name": "fspiop-encryption",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request."
+ },
+ {
+ "name": "fspiop-signature",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature."
+ },
+ {
+ "name": "fspiop-uri",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document."
+ },
+ {
+ "name": "fspiop-http-method",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document."
+ },
+ {
+ "name": "content-length",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int32",
+ "exclusiveMaximum": false,
+ "exclusiveMinimum": false,
+ "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created",
+ "headers": {}
+ },
+ "400": {
+ "description": "Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "401": {
+ "description": "Unauthorized - The request requires authentication in order to be processed.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "403": {
+ "description": "Forbidden - The request was denied and will be denied in the future.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "404": {
+ "description": "Not Found - The resource specified in the URI was not found.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "405": {
+ "description": "Method Not Allowed - An unsupported HTTP method for the request was used.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "406": {
+ "description": "Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "501": {
+ "description": "Not Implemented - The server does not support the requested service. The client should not retry.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ }
+ }
+ },
+ "delete": {
+ "description": "The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive",
+ "summary": "Delete participant information",
+ "tags": [
+ "participants"
+ ],
+ "operationId": "ParticipantsByTypeAndIDDelete",
+ "deprecated": false,
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "accept",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Accept header field indicates the version of the API the client would like the server to use."
+ },
+ {
+ "name": "Type",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": "The type of lookup being requested, this can be MSISDN, bankAccount etc."
+ },
+ {
+ "name": "ID",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": "The ID related to the Type, if MSISDN then this is the mobile number being requested"
+ },
+ {
+ "name": "Currency",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "description": "The Currency code applicable to the ID being requested"
+ },
+ {
+ "name": "SubId",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "description": "The SubId related to the ID, or the Type"
+ },
+ {
+ "name": "content-type",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Content-Type header indicates the specific version of the API used to send the payload body."
+ },
+ {
+ "name": "date",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Date header field indicates the date when the request was sent."
+ },
+ {
+ "name": "fspiop-source",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature)."
+ },
+ {
+ "name": "x-forwarded-for",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For."
+ },
+ {
+ "name": "fspiop-destination",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes."
+ },
+ {
+ "name": "fspiop-encryption",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request."
+ },
+ {
+ "name": "fspiop-signature",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature."
+ },
+ {
+ "name": "fspiop-uri",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document."
+ },
+ {
+ "name": "fspiop-http-method",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document."
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content",
+ "headers": {}
+ },
+ "400": {
+ "description": "Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "401": {
+ "description": "Unauthorized - The request requires authentication in order to be processed.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "403": {
+ "description": "Forbidden - The request was denied and will be denied in the future.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "404": {
+ "description": "Not Found - The resource specified in the URI was not found.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "405": {
+ "description": "Method Not Allowed - An unsupported HTTP method for the request was used.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "406": {
+ "description": "Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "501": {
+ "description": "Not Implemented - The server does not support the requested service. The client should not retry.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ }
+ }
+ }
+ },
+ "/participants": {
+ "post": {
+ "description": "The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency",
+ "summary": "Batch create participant information",
+ "tags": [
+ "participants"
+ ],
+ "operationId": "ParticipantsPost",
+ "deprecated": false,
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "accept",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Accept header field indicates the version of the API the client would like the server to use."
+ },
+ {
+ "name": "content-type",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Content-Type header indicates the specific version of the API used to send the payload body."
+ },
+ {
+ "name": "date",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The Date header field indicates the date when the request was sent."
+ },
+ {
+ "name": "fspiop-source",
+ "in": "header",
+ "required": true,
+ "type": "string",
+ "description": "The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature)."
+ },
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/ParticipantsPostRequest"
+ }
+ },
+ {
+ "name": "content-length",
+ "in": "header",
+ "required": false,
+ "type": "integer",
+ "format": "int32",
+ "exclusiveMaximum": false,
+ "exclusiveMinimum": false,
+ "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)"
+ },
+ {
+ "name": "x-forwarded-for",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For."
+ },
+ {
+ "name": "fspiop-destination",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes."
+ },
+ {
+ "name": "fspiop-encryption",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request."
+ },
+ {
+ "name": "fspiop-signature",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature."
+ },
+ {
+ "name": "fspiop-uri",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document."
+ },
+ {
+ "name": "fspiop-http-method",
+ "in": "header",
+ "required": false,
+ "type": "string",
+ "description": "The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document."
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Created",
+ "headers": {}
+ },
+ "400": {
+ "description": "Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "401": {
+ "description": "Unauthorized - The request requires authentication in order to be processed.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "403": {
+ "description": "Forbidden - The request was denied and will be denied in the future.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "404": {
+ "description": "Not Found - The resource specified in the URI was not found.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "405": {
+ "description": "Method Not Allowed - An unsupported HTTP method for the request was used.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "406": {
+ "description": "Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "501": {
+ "description": "Not Implemented - The server does not support the requested service. The client should not retry.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.",
+ "schema": {
+ "$ref": "#/definitions/ErrorInformationResponse"
+ }
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "CurrencyEnum": {
+ "title": "CurrencyEnum",
+ "description": "The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.",
+ "example": "AED",
+ "type": "string",
+ "enum": [
+ "AED",
+ "AFN",
+ "ALL",
+ "AMD",
+ "ANG",
+ "AOA",
+ "ARS",
+ "AUD",
+ "AWG",
+ "AZN",
+ "BAM",
+ "BBD",
+ "BDT",
+ "BGN",
+ "BHD",
+ "BIF",
+ "BMD",
+ "BND",
+ "BOB",
+ "BRL",
+ "BSD",
+ "BTN",
+ "BWP",
+ "BYN",
+ "BZD",
+ "CAD",
+ "CDF",
+ "CHF",
+ "CLP",
+ "CNY",
+ "COP",
+ "CRC",
+ "CUC",
+ "CUP",
+ "CVE",
+ "CZK",
+ "DJF",
+ "DKK",
+ "DOP",
+ "DZD",
+ "EGP",
+ "ERN",
+ "ETB",
+ "EUR",
+ "FJD",
+ "FKP",
+ "GBP",
+ "GEL",
+ "GGP",
+ "GHS",
+ "GIP",
+ "GMD",
+ "GNF",
+ "GTQ",
+ "GYD",
+ "HKD",
+ "HNL",
+ "HRK",
+ "HTG",
+ "HUF",
+ "IDR",
+ "ILS",
+ "IMP",
+ "INR",
+ "IQD",
+ "IRR",
+ "ISK",
+ "JEP",
+ "JMD",
+ "JOD",
+ "JPY",
+ "KES",
+ "KGS",
+ "KHR",
+ "KMF",
+ "KPW",
+ "KRW",
+ "KWD",
+ "KYD",
+ "KZT",
+ "LAK",
+ "LBP",
+ "LKR",
+ "LRD",
+ "LSL",
+ "LYD",
+ "MAD",
+ "MDL",
+ "MGA",
+ "MKD",
+ "MMK",
+ "MNT",
+ "MOP",
+ "MRO",
+ "MUR",
+ "MVR",
+ "MWK",
+ "MXN",
+ "MYR",
+ "MZN",
+ "NAD",
+ "NGN",
+ "NIO",
+ "NOK",
+ "NPR",
+ "NZD",
+ "OMR",
+ "PAB",
+ "PEN",
+ "PGK",
+ "PHP",
+ "PKR",
+ "PLN",
+ "PYG",
+ "QAR",
+ "RON",
+ "RSD",
+ "RUB",
+ "RWF",
+ "SAR",
+ "SBD",
+ "SCR",
+ "SDG",
+ "SEK",
+ "SGD",
+ "SHP",
+ "SLL",
+ "SOS",
+ "SPL",
+ "SRD",
+ "STD",
+ "SVC",
+ "SYP",
+ "SZL",
+ "THB",
+ "TJS",
+ "TMT",
+ "TND",
+ "TOP",
+ "TRY",
+ "TTD",
+ "TVD",
+ "TWD",
+ "TZS",
+ "UAH",
+ "UGX",
+ "USD",
+ "UYU",
+ "UZS",
+ "VEF",
+ "VND",
+ "VUV",
+ "WST",
+ "XAF",
+ "XCD",
+ "XDR",
+ "XOF",
+ "XPF",
+ "YER",
+ "ZAR",
+ "ZMW",
+ "ZWD"
+ ]
+ },
+ "PartyIdTypeEnum": {
+ "title": "PartyIdTypeEnum",
+ "description": "Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.",
+ "example": "MSISDN",
+ "type": "string",
+ "enum": [
+ "MSISDN",
+ "EMAIL",
+ "PERSONAL_ID",
+ "BUSINESS",
+ "DEVICE",
+ "ACCOUNT_ID",
+ "IBAN",
+ "ALIAS"
+ ]
+ },
+ "ErrorInformation": {
+ "title": "ErrorInformation",
+ "description": "Data model for the complex type ErrorInformation.",
+ "type": "object",
+ "properties": {
+ "errorCode": {
+ "description": "Specific error number.",
+ "type": "string"
+ },
+ "errorDescription": {
+ "description": "Error description string.",
+ "type": "string"
+ },
+ "extensionList": {
+ "$ref": "#/definitions/ExtensionList"
+ }
+ },
+ "required": [
+ "errorCode",
+ "errorDescription"
+ ]
+ },
+ "ErrorInformationResponse": {
+ "title": "ErrorInformationResponse",
+ "description": "Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.",
+ "type": "object",
+ "properties": {
+ "errorInformation": {
+ "$ref": "#/definitions/ErrorInformation"
+ }
+ }
+ },
+ "Extension": {
+ "title": "Extension",
+ "description": "Data model for the complex type Extension",
+ "type": "object",
+ "properties": {
+ "key": {
+ "description": "Extension key.",
+ "type": "string"
+ },
+ "value": {
+ "description": "Extension value.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "value"
+ ]
+ },
+ "ExtensionList": {
+ "title": "ExtensionList",
+ "description": "Data model for the complex type ExtensionList",
+ "type": "object",
+ "properties": {
+ "extension": {
+ "description": "Number of Extension elements",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Extension"
+ },
+ "minItems": 1,
+ "maxItems": 16
+ }
+ },
+ "required": [
+ "extension"
+ ]
+ },
+ "ParticipantsTypeIDGetResponse": {
+ "title": "ParticipantsTypeIDGetResponse",
+ "description": "OK",
+ "type": "object",
+ "properties": {
+ "partyList": {
+ "description": "List of PartyTypeIdInfo elements that were either created or failed to be created.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/PartyTypeIdInfo"
+ },
+ "minItems": 1,
+ "maxItems": 10000
+ }
+ }
+ },
+ "ParticipantsTypeIDPutRequest": {
+ "title": "ParticipantsTypeIDPutRequest",
+ "description": "PUT /participants/{Type}/{ID} object",
+ "type": "object",
+ "properties": {
+ "fspId": {
+ "description": "FSP Identifier that the Party belongs to.",
+ "type": "string"
+ },
+ "currency": {
+ "description": "Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.",
+ "type": "string"
+ },
+ "partySubIdOrType": {
+ "description": "A sub-identifier or sub-type for the Party.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "fspId",
+ "currency"
+ ]
+ },
+ "ParticipantsPostRequest": {
+ "title": "ParticipantsPostRequest",
+ "description": "POST /participants object",
+ "type": "object",
+ "properties": {
+ "requestId": {
+ "description": "The ID of the request, decided by the client. Used for identification of the callback from the server.",
+ "type": "string"
+ },
+ "partyList": {
+ "description": "List of PartyIdInfo elements that the client would like to update or create FSP information about.",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/PartyIdInfo"
+ },
+ "minItems": 1,
+ "maxItems": 10000
+ }
+ },
+ "required": [
+ "requestId",
+ "partyList"
+ ]
+ },
+ "PartyIdInfo": {
+ "title": "PartyIdInfo",
+ "description": "Data model for the complex type PartyIdInfo.",
+ "type": "object",
+ "properties": {
+ "partyIdType": {
+ "description": "Type of the identifier.",
+ "type": "string"
+ },
+ "partyIdentifier": {
+ "description": "An identifier for the Party.",
+ "type": "string"
+ },
+ "partySubIdOrType": {
+ "description": "A sub-identifier or sub-type for the Party.",
+ "type": "string"
+ },
+ "fspId": {
+ "description": "FSP ID",
+ "type": "string"
+ },
+ "currency": {
+ "description": "Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "partyIdType",
+ "partyIdentifier"
+ ]
+ },
+ "PartyTypeIdInfo": {
+ "title": "PartyTypeIdInfo",
+ "description": "Data model for the complex type PartyIdInfo.",
+ "type": "object",
+ "properties": {
+ "fspId": {
+ "description": "FSP ID",
+ "type": "string"
+ },
+ "currency": {
+ "description": "Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.",
+ "type": "string"
+ },
+ "partySubIdOrType": {
+ "description": "A sub-identifier or sub-type for the Party.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "fspId",
+ "currency"
+ ]
+ }
+ },
+ "tags": [
+ {
+ "name": "participants",
+ "description": ""
+ }
+ ]
+}
\ No newline at end of file
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
+
**Ubuntu** continue from here
A new release for a repository is made when when a significant change such as a
At of March 6th 2019, the active releases for core central services are as below
-* helm: **v5.2.0**
-* central-ledger: v5.3.0
-* ml-api-adapter: v5.2.1
-* central-settlement: v5.2.0
-* central-event-processor: v5.3.0
-* email-notifier: v5.3.0
+* Helm: [](https://github.com/mojaloop/helm/releases)
+* Central-Ledger: [](https://github.com/mojaloop/central-ledger/releases)
+* Ml-API-Adapter: [](https://github.com/mojaloop/ml-api-adapter/releases)
+* Central-Settlement: [](https://github.com/mojaloop/central-settlement/releases)
+* Central-Event-Processor: [](https://github.com/mojaloop/central-event-processor/releases)
+* Email-Notifier: [](https://github.com/mojaloop/email-notifier/releases)
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
The routing configuration will be based on the following:
The ALS Oracle be implemented as either a **Service** or **Adapter** (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
-* [ALS Oracle Service v1 Interface Contract](../../assets/InterfaceContracts/OracleServiceSwaggerv1.yaml)
-
## 2. Participant Lookup Design
### 2.1 Architecture overview
-
+
### 2.2 Sequence diagram
This component (or back-end systems) will also be responsible for the persistenc
## 3. Party Lookup Design
### 3.1 Architecture overview
-
+
### 3.2 Sequence diagram
This component (or back-end systems) will also be responsible for the persistenc
- `migration*` - Meta-data tables used by Knex Framework engine.
- A `centralSwitchEndpoint` must be associated to the `OracleEndpoint` by the Admin API upon insertion of a new `OracleEndpoint` record. If the `centralSwitchEndpoint` is not provided as part of the API Request, then it must be defaulted.
-
+
-* [Acount Lookup Service DBeaver ERD](../../assets/Diagrams/EntityRelationshipDiagrams/AccountLookupDB-schema-DBeaver.erd)
-* [Acount Lookup Service MySQL Workbench Export](../../assets/Diagrams/EntityRelationshipDiagrams/AccountLookup-ddl-MySQLWorkbench.sql)
+* [Acount Lookup Service DBeaver ERD](./assets/entities/AccountLookupDB-schema-DBeaver.erd)
+* [Acount Lookup Service MySQL Workbench Export](./assets/entities/AccountLookup-ddl-MySQLWorkbench.sql)
## 5 ALS Oracle Design
Detail design for the Oracle is out of scope for this document. The Oracle desig
### 5.1 API Specification
-Refer to **ALS Oracle API Specification** in the [API Specifications](../api#als-oracle-api) section.
+Refer to **ALS Oracle API Specification** in the [API Specifications](../../api/README.md#als-oracle-api) section.
## Sequence Diagram
-```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-participant-7.1.0.plantuml" }
```
## Sequence Diagram
-```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-parties-7.2.0.plantuml" }
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-get-parties-7.2.0.plantuml" }
```
## Sequence Diagram
-```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-post-participants-7.2.1.plantuml" }
+```puml { src="./mojaloop-technical-overview/account-lookup-service/assets/diagrams/sequence/seq-acct-lookup-post-participants-7.2.1.plantuml" }
```
/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep b/mojaloop-technical-overview/account-lookup-service/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-ledger/.gitkeep b/mojaloop-technical-overview/central-ledger/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-ledger/assets/.gitkeep b/mojaloop-technical-overview/central-ledger/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/.gitkeep b/mojaloop-technical-overview/central-settlements/.gitkeep
new file mode 100644
index 0000000..e69de29
/mojaloop-technical-overview/central-settlements/assets/.gitkeep b/mojaloop-technical-overview/central-settlements/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
The purpose of this document is to provide;
* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)
-
+
## Helm Hierarchy Relationship
-
+
## Helm Hierarchy of Values
-
+
group Get Participant's FSP Details
hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
if lookup for Oracle based on {CURRENCY} if and only if {CURRENCY} is provided
- SELECT oe.value, oe.centralSwitchEndpointId FROM account_lookup.oracleEndpoint as oe
+ SELECT oe.value, oe.centralSwitchEndpointId, et.type as endpointType FROM account_lookup.oracleEndpoint as oe
inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ inner join account_lookup.centralSwitchEndpoint as cs on oe.centralSwitchEndpointId = cs.centralSwitchEndpointId
where cu.currencyId = '{CURRENCY}'
and pt.name = '{TYPE}'
and pt.isActive = true
- and oe.isActive = true;
+ and oe.isActive = true
+ and cs.isActive = true;
else lookup default Oracle if no {CURRENCY} is provided:
- SELECT oe.value, oe.centralSwitchEndpointId FROM account_lookup.oracleEndpoint as oe
+ SELECT oe.value, oe.centralSwitchEndpointId, et.type as endpointType FROM account_lookup.oracleEndpoint as oe
inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ inner join account_lookup.centralSwitchEndpoint as cs on oe.centralSwitchEndpointId = cs.centralSwitchEndpointId
where pt.name = '{TYPE}'
and pt.isActive = true
and oe.isActive = true
+ and cs.isActive = true
and oe.isDefault = true;
end if
end note
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Switch Routing information. \nError code: 200x
hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
- select cs.value from account_lookup.centralSwitchEndpoint as cs
+ select cs.value, et.type as endpointType from account_lookup.centralSwitchEndpoint as cs
+ inner join account_lookup.endpointType as et on cs.endpointTypeId = et.endpointTypeId
where centralSwitchEndpointId = {centralSwitchEndpointId from 'REFERENCE: Get Oracle Routing Config Sequence'};
end note
group Get Participant's FSP Details
activate ALS_DB
hnote over ALS_DB #lightyellow
- ****** TBC ******
centralSwitchEndpoint
endpointType
end note
This component (or back-end systems) will also be responsible for the persistenc
- `currency` - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
- `endPointType` - Type identifier for the end-point (e.g. `URL`) which provides flexibility for future transport support.
- `migration*` - Meta-data tables used by Knex Framework engine.
+- A `centralSwitchEndpoint` must be associated to the `OracleEndpoint` by the Admin API upon insertion of a new `OracleEndpoint` record. If the `centralSwitchEndpoint` is not provided as part of the API Request, then it must be defaulted.

-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve the PUT end-point)A1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A6. Retrieve Participant End-points GET /participants/<participantId>/endpointsA1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A8. User Lookup PUT /participants/<idType>/<id>A8. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA7. Retrieve Participant End-point DataA7. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Adapter/Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A2. Lookup Central Switch Service End-points based on <idType>
\ No newline at end of file
-Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 8. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve both the POST and PUT end-points)A1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A7. User Lookup GET /parties/<idType>/<id>A7. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A9. User Lookup PUT /parties/<idType>/<id>A9. User Lookup <br>PUT /parties/<idType>/<id>A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 9. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A7. Retrieve PayeeFSP Participant End-pointsGET /participants/<participantId>/endpointsA1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A5. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A8. User Lookup GET /parties/<idType>/<id>A8. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A6. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A6. AltA6. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A6. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>A5. AltA5. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>A13. User Lookup PUT /parties/<idType>/<id>A13. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA4. Retrieve Participant End-point DataA4. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A4. Lookup Central Switch Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]A5. Lookup Oracle Registry ServiceEnd-points based on <idType>A11. Retrieve PayerFSP Participant End-pointsGET /participants/<participantId>/endpointsA3. Retrieve PayeeFSP Data for ValidationGET /participants/<participantId>(retrieve FSP Data)A12. Retrieve Participant End-point Data<font style="font-size: 13px">A12. Retrieve Participant End-point Data</font>
\ No newline at end of file
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+--
+-- Table structure for table `centralSwitchEndpoint`
+--
+
+DROP TABLE IF EXISTS `centralSwitchEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `centralSwitchEndpoint` (
+ `centralSwitchEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`centralSwitchEndpointId`),
+ KEY `centralswitchendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `centralswitchendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `centralSwitchEndpoint`
+--
+
+LOCK TABLES `centralSwitchEndpoint` WRITE;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `centralSwitchEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
--
-- Table structure for table `currency`
--
CREATE TABLE `currency` (
LOCK TABLES `currency` WRITE;
/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
-INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-13 11:38:59'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-13 11:38:59'),('AFN','Afghanistan afghani',1,'2019-03-13 11:38:59'),('ALL','Albanian lek',1,'2019-03-13 11:38:59'),('AMD','Armenian dram',1,'2019-03-13 11:38:59'),('ANG','Netherlands Antillian guilder',1,'2019-03-13 11:38:59'),('AOA','Angolan kwanza',1,'2019-03-13 11:38:59'),('AOR','Angolan kwanza reajustado',1,'2019-03-13 11:38:59'),('ARS','Argentine peso',1,'2019-03-13 11:38:59'),('AUD','Australian dollar',1,'2019-03-13 11:38:59'),('AWG','Aruban guilder',1,'2019-03-13 11:38:59'),('AZN','Azerbaijanian new manat',1,'2019-03-13 11:38:59'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-13 11:38:59'),('BBD','Barbados dollar',1,'2019-03-13 11:38:59'),('BDT','Bangladeshi taka',1,'2019-03-13 11:38:59'),('BGN','Bulgarian lev',1,'2019-03-13 11:38:59'),('BHD','Bahraini dinar',1,'2019-03-13 11:38:59'),('BIF','Burundi franc',1,'2019-03-13 11:38:59'),('BMD','Bermudian dollar',1,'2019-03-13 11:38:59'),('BND','Brunei dollar',1,'2019-03-13 11:38:59'),('BOB','Bolivian boliviano',1,'2019-03-13 11:38:59'),('BRL','Brazilian real',1,'2019-03-13 11:38:59'),('BSD','Bahamian dollar',1,'2019-03-13 11:38:59'),('BTN','Bhutan ngultrum',1,'2019-03-13 11:38:59'),('BWP','Botswana pula',1,'2019-03-13 11:38:59'),('BYN','Belarusian ruble',1,'2019-03-13 11:38:59'),('BZD','Belize dollar',1,'2019-03-13 11:38:59'),('CAD','Canadian dollar',1,'2019-03-13 11:38:59'),('CDF','Congolese franc',1,'2019-03-13 11:38:59'),('CHF','Swiss franc',1,'2019-03-13 11:38:59'),('CLP','Chilean peso',1,'2019-03-13 11:38:59'),('CNY','Chinese yuan renminbi',1,'2019-03-13 11:38:59'),('COP','Colombian peso',1,'2019-03-13 11:38:59'),('CRC','Costa Rican colon',1,'2019-03-13 11:38:59'),('CUC','Cuban convertible peso',1,'2019-03-13 11:38:59'),('CUP','Cuban peso',1,'2019-03-13 11:38:59'),('CVE','Cape Verde escudo',1,'2019-03-13 11:38:59'),('CZK','Czech koruna',1,'2019-03-13 11:38:59'),('DJF','Djibouti franc',1,'2019-03-13 11:38:59'),('DKK','Danish krone',1,'2019-03-13 11:38:59'),('DOP','Dominican peso',1,'2019-03-13 11:38:59'),('DZD','Algerian dinar',1,'2019-03-13 11:38:59'),('EEK','Estonian kroon',1,'2019-03-13 11:38:59'),('EGP','Egyptian pound',1,'2019-03-13 11:38:59'),('ERN','Eritrean nakfa',1,'2019-03-13 11:38:59'),('ETB','Ethiopian birr',1,'2019-03-13 11:38:59'),('EUR','EU euro',1,'2019-03-13 11:38:59'),('FJD','Fiji dollar',1,'2019-03-13 11:38:59'),('FKP','Falkland Islands pound',1,'2019-03-13 11:38:59'),('GBP','British pound',1,'2019-03-13 11:38:59'),('GEL','Georgian lari',1,'2019-03-13 11:38:59'),('GGP','Guernsey pound',1,'2019-03-13 11:38:59'),('GHS','Ghanaian new cedi',1,'2019-03-13 11:38:59'),('GIP','Gibraltar pound',1,'2019-03-13 11:38:59'),('GMD','Gambian dalasi',1,'2019-03-13 11:38:59'),('GNF','Guinean franc',1,'2019-03-13 11:38:59'),('GTQ','Guatemalan quetzal',1,'2019-03-13 11:38:59'),('GYD','Guyana dollar',1,'2019-03-13 11:38:59'),('HKD','Hong Kong SAR dollar',1,'2019-03-13 11:38:59'),('HNL','Honduran lempira',1,'2019-03-13 11:38:59'),('HRK','Croatian kuna',1,'2019-03-13 11:38:59'),('HTG','Haitian gourde',1,'2019-03-13 11:38:59'),('HUF','Hungarian forint',1,'2019-03-13 11:38:59'),('IDR','Indonesian rupiah',1,'2019-03-13 11:38:59'),('ILS','Israeli new shekel',1,'2019-03-13 11:38:59'),('IMP','Isle of Man pound',1,'2019-03-13 11:38:59'),('INR','Indian rupee',1,'2019-03-13 11:38:59'),('IQD','Iraqi dinar',1,'2019-03-13 11:38:59'),('IRR','Iranian rial',1,'2019-03-13 11:38:59'),('ISK','Icelandic krona',1,'2019-03-13 11:38:59'),('JEP','Jersey pound',1,'2019-03-13 11:38:59'),('JMD','Jamaican dollar',1,'2019-03-13 11:38:59'),('JOD','Jordanian dinar',1,'2019-03-13 11:38:59'),('JPY','Japanese yen',1,'2019-03-13 11:38:59'),('KES','Kenyan shilling',1,'2019-03-13 11:38:59'),('KGS','Kyrgyz som',1,'2019-03-13 11:38:59'),('KHR','Cambodian riel',1,'2019-03-13 11:38:59'),('KMF','Comoros franc',1,'2019-03-13 11:38:59'),('KPW','North Korean won',1,'2019-03-13 11:38:59'),('KRW','South Korean won',1,'2019-03-13 11:38:59'),('KWD','Kuwaiti dinar',1,'2019-03-13 11:38:59'),('KYD','Cayman Islands dollar',1,'2019-03-13 11:38:59'),('KZT','Kazakh tenge',1,'2019-03-13 11:38:59'),('LAK','Lao kip',1,'2019-03-13 11:38:59'),('LBP','Lebanese pound',1,'2019-03-13 11:38:59'),('LKR','Sri Lanka rupee',1,'2019-03-13 11:38:59'),('LRD','Liberian dollar',1,'2019-03-13 11:38:59'),('LSL','Lesotho loti',1,'2019-03-13 11:38:59'),('LTL','Lithuanian litas',1,'2019-03-13 11:38:59'),('LVL','Latvian lats',1,'2019-03-13 11:38:59'),('LYD','Libyan dinar',1,'2019-03-13 11:38:59'),('MAD','Moroccan dirham',1,'2019-03-13 11:38:59'),('MDL','Moldovan leu',1,'2019-03-13 11:38:59'),('MGA','Malagasy ariary',1,'2019-03-13 11:38:59'),('MKD','Macedonian denar',1,'2019-03-13 11:38:59'),('MMK','Myanmar kyat',1,'2019-03-13 11:38:59'),('MNT','Mongolian tugrik',1,'2019-03-13 11:38:59'),('MOP','Macao SAR pataca',1,'2019-03-13 11:38:59'),('MRO','Mauritanian ouguiya',1,'2019-03-13 11:38:59'),('MUR','Mauritius rupee',1,'2019-03-13 11:38:59'),('MVR','Maldivian rufiyaa',1,'2019-03-13 11:38:59'),('MWK','Malawi kwacha',1,'2019-03-13 11:38:59'),('MXN','Mexican peso',1,'2019-03-13 11:38:59'),('MYR','Malaysian ringgit',1,'2019-03-13 11:38:59'),('MZN','Mozambique new metical',1,'2019-03-13 11:38:59'),('NAD','Namibian dollar',1,'2019-03-13 11:38:59'),('NGN','Nigerian naira',1,'2019-03-13 11:38:59'),('NIO','Nicaraguan cordoba oro',1,'2019-03-13 11:38:59'),('NOK','Norwegian krone',1,'2019-03-13 11:38:59'),('NPR','Nepalese rupee',1,'2019-03-13 11:38:59'),('NZD','New Zealand dollar',1,'2019-03-13 11:38:59'),('OMR','Omani rial',1,'2019-03-13 11:38:59'),('PAB','Panamanian balboa',1,'2019-03-13 11:38:59'),('PEN','Peruvian nuevo sol',1,'2019-03-13 11:38:59'),('PGK','Papua New Guinea kina',1,'2019-03-13 11:38:59'),('PHP','Philippine peso',1,'2019-03-13 11:38:59'),('PKR','Pakistani rupee',1,'2019-03-13 11:38:59'),('PLN','Polish zloty',1,'2019-03-13 11:38:59'),('PYG','Paraguayan guarani',1,'2019-03-13 11:38:59'),('QAR','Qatari rial',1,'2019-03-13 11:38:59'),('RON','Romanian new leu',1,'2019-03-13 11:38:59'),('RSD','Serbian dinar',1,'2019-03-13 11:38:59'),('RUB','Russian ruble',1,'2019-03-13 11:38:59'),('RWF','Rwandan franc',1,'2019-03-13 11:38:59'),('SAR','Saudi riyal',1,'2019-03-13 11:38:59'),('SBD','Solomon Islands dollar',1,'2019-03-13 11:38:59'),('SCR','Seychelles rupee',1,'2019-03-13 11:38:59'),('SDG','Sudanese pound',1,'2019-03-13 11:38:59'),('SEK','Swedish krona',1,'2019-03-13 11:38:59'),('SGD','Singapore dollar',1,'2019-03-13 11:38:59'),('SHP','Saint Helena pound',1,'2019-03-13 11:38:59'),('SLL','Sierra Leone leone',1,'2019-03-13 11:38:59'),('SOS','Somali shilling',1,'2019-03-13 11:38:59'),('SPL','Seborgan luigino',1,'2019-03-13 11:38:59'),('SRD','Suriname dollar',1,'2019-03-13 11:38:59'),('STD','Sao Tome and Principe dobra',1,'2019-03-13 11:38:59'),('SVC','El Salvador colon',1,'2019-03-13 11:38:59'),('SYP','Syrian pound',1,'2019-03-13 11:38:59'),('SZL','Swaziland lilangeni',1,'2019-03-13 11:38:59'),('THB','Thai baht',1,'2019-03-13 11:38:59'),('TJS','Tajik somoni',1,'2019-03-13 11:38:59'),('TMT','Turkmen new manat',1,'2019-03-13 11:38:59'),('TND','Tunisian dinar',1,'2019-03-13 11:38:59'),('TOP','Tongan pa\'anga',1,'2019-03-13 11:38:59'),('TRY','Turkish lira',1,'2019-03-13 11:38:59'),('TTD','Trinidad and Tobago dollar',1,'2019-03-13 11:38:59'),('TVD','Tuvaluan dollar',1,'2019-03-13 11:38:59'),('TWD','Taiwan New dollar',1,'2019-03-13 11:38:59'),('TZS','Tanzanian shilling',1,'2019-03-13 11:38:59'),('UAH','Ukrainian hryvnia',1,'2019-03-13 11:38:59'),('UGX','Uganda new shilling',1,'2019-03-13 11:38:59'),('USD','US dollar',1,'2019-03-13 11:38:59'),('UYU','Uruguayan peso uruguayo',1,'2019-03-13 11:38:59'),('UZS','Uzbekistani sum',1,'2019-03-13 11:38:59'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-13 11:38:59'),('VND','Vietnamese dong',1,'2019-03-13 11:38:59'),('VUV','Vanuatu vatu',1,'2019-03-13 11:38:59'),('WST','Samoan tala',1,'2019-03-13 11:38:59'),('XAF','CFA franc BEAC',1,'2019-03-13 11:38:59'),('XAG','Silver (ounce)',1,'2019-03-13 11:38:59'),('XAU','Gold (ounce)',1,'2019-03-13 11:38:59'),('XCD','East Caribbean dollar',1,'2019-03-13 11:38:59'),('XDR','IMF special drawing right',1,'2019-03-13 11:38:59'),('XFO','Gold franc',1,'2019-03-13 11:38:59'),('XFU','UIC franc',1,'2019-03-13 11:38:59'),('XOF','CFA franc BCEAO',1,'2019-03-13 11:38:59'),('XPD','Palladium (ounce)',1,'2019-03-13 11:38:59'),('XPF','CFP franc',1,'2019-03-13 11:38:59'),('XPT','Platinum (ounce)',1,'2019-03-13 11:38:59'),('YER','Yemeni rial',1,'2019-03-13 11:38:59'),('ZAR','South African rand',1,'2019-03-13 11:38:59'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-13 11:38:59'),('ZMW','Zambian kwacha',1,'2019-03-13 11:38:59'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-13 11:38:59'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-13 11:38:59'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-13 11:38:59'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-13 11:38:59');
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-18 15:40:04'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-18 15:40:04'),('AFN','Afghanistan afghani',1,'2019-03-18 15:40:04'),('ALL','Albanian lek',1,'2019-03-18 15:40:04'),('AMD','Armenian dram',1,'2019-03-18 15:40:04'),('ANG','Netherlands Antillian guilder',1,'2019-03-18 15:40:04'),('AOA','Angolan kwanza',1,'2019-03-18 15:40:04'),('AOR','Angolan kwanza reajustado',1,'2019-03-18 15:40:04'),('ARS','Argentine peso',1,'2019-03-18 15:40:04'),('AUD','Australian dollar',1,'2019-03-18 15:40:04'),('AWG','Aruban guilder',1,'2019-03-18 15:40:04'),('AZN','Azerbaijanian new manat',1,'2019-03-18 15:40:04'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-18 15:40:04'),('BBD','Barbados dollar',1,'2019-03-18 15:40:04'),('BDT','Bangladeshi taka',1,'2019-03-18 15:40:04'),('BGN','Bulgarian lev',1,'2019-03-18 15:40:04'),('BHD','Bahraini dinar',1,'2019-03-18 15:40:04'),('BIF','Burundi franc',1,'2019-03-18 15:40:04'),('BMD','Bermudian dollar',1,'2019-03-18 15:40:04'),('BND','Brunei dollar',1,'2019-03-18 15:40:04'),('BOB','Bolivian boliviano',1,'2019-03-18 15:40:04'),('BRL','Brazilian real',1,'2019-03-18 15:40:04'),('BSD','Bahamian dollar',1,'2019-03-18 15:40:04'),('BTN','Bhutan ngultrum',1,'2019-03-18 15:40:04'),('BWP','Botswana pula',1,'2019-03-18 15:40:04'),('BYN','Belarusian ruble',1,'2019-03-18 15:40:04'),('BZD','Belize dollar',1,'2019-03-18 15:40:04'),('CAD','Canadian dollar',1,'2019-03-18 15:40:04'),('CDF','Congolese franc',1,'2019-03-18 15:40:04'),('CHF','Swiss franc',1,'2019-03-18 15:40:04'),('CLP','Chilean peso',1,'2019-03-18 15:40:04'),('CNY','Chinese yuan renminbi',1,'2019-03-18 15:40:04'),('COP','Colombian peso',1,'2019-03-18 15:40:04'),('CRC','Costa Rican colon',1,'2019-03-18 15:40:04'),('CUC','Cuban convertible peso',1,'2019-03-18 15:40:04'),('CUP','Cuban peso',1,'2019-03-18 15:40:04'),('CVE','Cape Verde escudo',1,'2019-03-18 15:40:04'),('CZK','Czech koruna',1,'2019-03-18 15:40:04'),('DJF','Djibouti franc',1,'2019-03-18 15:40:04'),('DKK','Danish krone',1,'2019-03-18 15:40:04'),('DOP','Dominican peso',1,'2019-03-18 15:40:04'),('DZD','Algerian dinar',1,'2019-03-18 15:40:04'),('EEK','Estonian kroon',1,'2019-03-18 15:40:04'),('EGP','Egyptian pound',1,'2019-03-18 15:40:04'),('ERN','Eritrean nakfa',1,'2019-03-18 15:40:04'),('ETB','Ethiopian birr',1,'2019-03-18 15:40:04'),('EUR','EU euro',1,'2019-03-18 15:40:04'),('FJD','Fiji dollar',1,'2019-03-18 15:40:04'),('FKP','Falkland Islands pound',1,'2019-03-18 15:40:04'),('GBP','British pound',1,'2019-03-18 15:40:04'),('GEL','Georgian lari',1,'2019-03-18 15:40:04'),('GGP','Guernsey pound',1,'2019-03-18 15:40:04'),('GHS','Ghanaian new cedi',1,'2019-03-18 15:40:04'),('GIP','Gibraltar pound',1,'2019-03-18 15:40:04'),('GMD','Gambian dalasi',1,'2019-03-18 15:40:04'),('GNF','Guinean franc',1,'2019-03-18 15:40:04'),('GTQ','Guatemalan quetzal',1,'2019-03-18 15:40:04'),('GYD','Guyana dollar',1,'2019-03-18 15:40:04'),('HKD','Hong Kong SAR dollar',1,'2019-03-18 15:40:04'),('HNL','Honduran lempira',1,'2019-03-18 15:40:04'),('HRK','Croatian kuna',1,'2019-03-18 15:40:04'),('HTG','Haitian gourde',1,'2019-03-18 15:40:04'),('HUF','Hungarian forint',1,'2019-03-18 15:40:04'),('IDR','Indonesian rupiah',1,'2019-03-18 15:40:04'),('ILS','Israeli new shekel',1,'2019-03-18 15:40:04'),('IMP','Isle of Man pound',1,'2019-03-18 15:40:04'),('INR','Indian rupee',1,'2019-03-18 15:40:04'),('IQD','Iraqi dinar',1,'2019-03-18 15:40:04'),('IRR','Iranian rial',1,'2019-03-18 15:40:04'),('ISK','Icelandic krona',1,'2019-03-18 15:40:04'),('JEP','Jersey pound',1,'2019-03-18 15:40:04'),('JMD','Jamaican dollar',1,'2019-03-18 15:40:04'),('JOD','Jordanian dinar',1,'2019-03-18 15:40:04'),('JPY','Japanese yen',1,'2019-03-18 15:40:04'),('KES','Kenyan shilling',1,'2019-03-18 15:40:04'),('KGS','Kyrgyz som',1,'2019-03-18 15:40:04'),('KHR','Cambodian riel',1,'2019-03-18 15:40:04'),('KMF','Comoros franc',1,'2019-03-18 15:40:04'),('KPW','North Korean won',1,'2019-03-18 15:40:04'),('KRW','South Korean won',1,'2019-03-18 15:40:04'),('KWD','Kuwaiti dinar',1,'2019-03-18 15:40:04'),('KYD','Cayman Islands dollar',1,'2019-03-18 15:40:04'),('KZT','Kazakh tenge',1,'2019-03-18 15:40:04'),('LAK','Lao kip',1,'2019-03-18 15:40:04'),('LBP','Lebanese pound',1,'2019-03-18 15:40:04'),('LKR','Sri Lanka rupee',1,'2019-03-18 15:40:04'),('LRD','Liberian dollar',1,'2019-03-18 15:40:04'),('LSL','Lesotho loti',1,'2019-03-18 15:40:04'),('LTL','Lithuanian litas',1,'2019-03-18 15:40:04'),('LVL','Latvian lats',1,'2019-03-18 15:40:04'),('LYD','Libyan dinar',1,'2019-03-18 15:40:04'),('MAD','Moroccan dirham',1,'2019-03-18 15:40:04'),('MDL','Moldovan leu',1,'2019-03-18 15:40:04'),('MGA','Malagasy ariary',1,'2019-03-18 15:40:04'),('MKD','Macedonian denar',1,'2019-03-18 15:40:04'),('MMK','Myanmar kyat',1,'2019-03-18 15:40:04'),('MNT','Mongolian tugrik',1,'2019-03-18 15:40:04'),('MOP','Macao SAR pataca',1,'2019-03-18 15:40:04'),('MRO','Mauritanian ouguiya',1,'2019-03-18 15:40:04'),('MUR','Mauritius rupee',1,'2019-03-18 15:40:04'),('MVR','Maldivian rufiyaa',1,'2019-03-18 15:40:04'),('MWK','Malawi kwacha',1,'2019-03-18 15:40:04'),('MXN','Mexican peso',1,'2019-03-18 15:40:04'),('MYR','Malaysian ringgit',1,'2019-03-18 15:40:04'),('MZN','Mozambique new metical',1,'2019-03-18 15:40:04'),('NAD','Namibian dollar',1,'2019-03-18 15:40:04'),('NGN','Nigerian naira',1,'2019-03-18 15:40:04'),('NIO','Nicaraguan cordoba oro',1,'2019-03-18 15:40:04'),('NOK','Norwegian krone',1,'2019-03-18 15:40:04'),('NPR','Nepalese rupee',1,'2019-03-18 15:40:04'),('NZD','New Zealand dollar',1,'2019-03-18 15:40:04'),('OMR','Omani rial',1,'2019-03-18 15:40:04'),('PAB','Panamanian balboa',1,'2019-03-18 15:40:04'),('PEN','Peruvian nuevo sol',1,'2019-03-18 15:40:04'),('PGK','Papua New Guinea kina',1,'2019-03-18 15:40:04'),('PHP','Philippine peso',1,'2019-03-18 15:40:04'),('PKR','Pakistani rupee',1,'2019-03-18 15:40:04'),('PLN','Polish zloty',1,'2019-03-18 15:40:04'),('PYG','Paraguayan guarani',1,'2019-03-18 15:40:04'),('QAR','Qatari rial',1,'2019-03-18 15:40:04'),('RON','Romanian new leu',1,'2019-03-18 15:40:04'),('RSD','Serbian dinar',1,'2019-03-18 15:40:04'),('RUB','Russian ruble',1,'2019-03-18 15:40:04'),('RWF','Rwandan franc',1,'2019-03-18 15:40:04'),('SAR','Saudi riyal',1,'2019-03-18 15:40:04'),('SBD','Solomon Islands dollar',1,'2019-03-18 15:40:04'),('SCR','Seychelles rupee',1,'2019-03-18 15:40:04'),('SDG','Sudanese pound',1,'2019-03-18 15:40:04'),('SEK','Swedish krona',1,'2019-03-18 15:40:04'),('SGD','Singapore dollar',1,'2019-03-18 15:40:04'),('SHP','Saint Helena pound',1,'2019-03-18 15:40:04'),('SLL','Sierra Leone leone',1,'2019-03-18 15:40:04'),('SOS','Somali shilling',1,'2019-03-18 15:40:04'),('SPL','Seborgan luigino',1,'2019-03-18 15:40:04'),('SRD','Suriname dollar',1,'2019-03-18 15:40:04'),('STD','Sao Tome and Principe dobra',1,'2019-03-18 15:40:04'),('SVC','El Salvador colon',1,'2019-03-18 15:40:04'),('SYP','Syrian pound',1,'2019-03-18 15:40:04'),('SZL','Swaziland lilangeni',1,'2019-03-18 15:40:04'),('THB','Thai baht',1,'2019-03-18 15:40:04'),('TJS','Tajik somoni',1,'2019-03-18 15:40:04'),('TMT','Turkmen new manat',1,'2019-03-18 15:40:04'),('TND','Tunisian dinar',1,'2019-03-18 15:40:04'),('TOP','Tongan pa\'anga',1,'2019-03-18 15:40:04'),('TRY','Turkish lira',1,'2019-03-18 15:40:04'),('TTD','Trinidad and Tobago dollar',1,'2019-03-18 15:40:04'),('TVD','Tuvaluan dollar',1,'2019-03-18 15:40:04'),('TWD','Taiwan New dollar',1,'2019-03-18 15:40:04'),('TZS','Tanzanian shilling',1,'2019-03-18 15:40:04'),('UAH','Ukrainian hryvnia',1,'2019-03-18 15:40:04'),('UGX','Uganda new shilling',1,'2019-03-18 15:40:04'),('USD','US dollar',1,'2019-03-18 15:40:04'),('UYU','Uruguayan peso uruguayo',1,'2019-03-18 15:40:04'),('UZS','Uzbekistani sum',1,'2019-03-18 15:40:04'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-18 15:40:04'),('VND','Vietnamese dong',1,'2019-03-18 15:40:04'),('VUV','Vanuatu vatu',1,'2019-03-18 15:40:04'),('WST','Samoan tala',1,'2019-03-18 15:40:04'),('XAF','CFA franc BEAC',1,'2019-03-18 15:40:04'),('XAG','Silver (ounce)',1,'2019-03-18 15:40:04'),('XAU','Gold (ounce)',1,'2019-03-18 15:40:04'),('XCD','East Caribbean dollar',1,'2019-03-18 15:40:04'),('XDR','IMF special drawing right',1,'2019-03-18 15:40:04'),('XFO','Gold franc',1,'2019-03-18 15:40:04'),('XFU','UIC franc',1,'2019-03-18 15:40:04'),('XOF','CFA franc BCEAO',1,'2019-03-18 15:40:04'),('XPD','Palladium (ounce)',1,'2019-03-18 15:40:04'),('XPF','CFP franc',1,'2019-03-18 15:40:04'),('XPT','Platinum (ounce)',1,'2019-03-18 15:40:04'),('YER','Yemeni rial',1,'2019-03-18 15:40:04'),('ZAR','South African rand',1,'2019-03-18 15:40:04'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-18 15:40:04'),('ZMW','Zambian kwacha',1,'2019-03-18 15:40:04'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-18 15:40:04'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-18 15:40:04'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-18 15:40:04'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
UNLOCK TABLES;
CREATE TABLE `endpointType` (
LOCK TABLES `endpointType` WRITE;
/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
-INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-13 11:38:59');
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
UNLOCK TABLES;
+--
+-- Table structure for table `migration`
+--
+
+DROP TABLE IF EXISTS `migration`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) DEFAULT NULL,
+ `batch` int(11) DEFAULT NULL,
+ `migration_time` timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration`
+--
+
+LOCK TABLES `migration` WRITE;
+/*!40000 ALTER TABLE `migration` DISABLE KEYS */;
+INSERT INTO `migration` VALUES (1,'01_currency.js',1,'2019-03-18 17:40:03'),(2,'02_endpointType.js',1,'2019-03-18 17:40:03'),(3,'03_endpointType-indexes.js',1,'2019-03-18 17:40:03'),(4,'04_partyIdType.js',1,'2019-03-18 17:40:03'),(5,'05_partyIdType-indexes.js',1,'2019-03-18 17:40:03'),(6,'06_centralSwitchEndpoint.js',1,'2019-03-18 17:40:03'),(7,'07_centralSwitchEndpoint-indexes.js',1,'2019-03-18 17:40:03'),(8,'08_oracleEndpoint.js',1,'2019-03-18 17:40:03'),(9,'09_oracleEndpoint-indexes.js',1,'2019-03-18 17:40:03');
+/*!40000 ALTER TABLE `migration` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `migration_lock`
+--
+
+DROP TABLE IF EXISTS `migration_lock`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `migration_lock` (
+ `index` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `is_locked` int(11) DEFAULT NULL,
+ PRIMARY KEY (`index`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `migration_lock`
+--
+
+LOCK TABLES `migration_lock` WRITE;
+/*!40000 ALTER TABLE `migration_lock` DISABLE KEYS */;
+INSERT INTO `migration_lock` VALUES (1,0);
+/*!40000 ALTER TABLE `migration_lock` ENABLE KEYS */;
+UNLOCK TABLES;
+
--
-- Table structure for table `oracleEndpoint`
--
CREATE TABLE `oracleEndpoint` (
`oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partyIdTypeId` int(10) unsigned NOT NULL,
`endpointTypeId` int(10) unsigned NOT NULL,
+ `centralSwitchEndpointId` int(10) unsigned DEFAULT NULL,
`currencyId` varchar(255) DEFAULT NULL,
`value` varchar(512) NOT NULL,
`isDefault` tinyint(1) NOT NULL DEFAULT '0',
CREATE TABLE `oracleEndpoint` (
`createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` varchar(128) NOT NULL,
PRIMARY KEY (`oracleEndpointId`),
+ KEY `oracleendpoint_centralswitchendpointid_foreign` (`centralSwitchEndpointId`),
KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `oracleendpoint_centralswitchendpointid_foreign` FOREIGN KEY (`centralSwitchEndpointId`) REFERENCES `centralSwitchEndpoint` (`centralswitchendpointid`),
CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
CREATE TABLE `partyIdType` (
LOCK TABLES `partyIdType` WRITE;
/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
-INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-13 11:38:59'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-13 11:38:59'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-13 11:38:59'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-13 11:38:59'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-13 11:38:59'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-13 11:38:59'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-13 11:38:59'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-13 11:38:59');
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-18 15:40:04'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-18 15:40:04'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-18 15:40:04'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-18 15:40:04'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-18 15:40:04'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-18 15:40:04'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-18 15:40:04');
/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2019-03-13 14:11:19
+-- Dump completed on 2019-03-18 17:52:06
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
database "ALS Database" as ALS_DB
boundary "Oracle Service API" as ORACLE_API
boundary "Central Service API" as CENTRALSERVICE_API
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
box "Account Lookup Service" #LightYellow
participant ALS_API
participant ALS_PARTICIPANT_HANDLER
group Get Participant's FSP Details
alt oracleEndpoint match found
'********************* Fetch Oracle Routing Config - START ************************
- group #99cef7 REFERENCE: Get Oracle Routing Config Sequence
+ group #99cef7 REFERENCE: Get Oracle Routing Config Sequence [CACHED]
activate ALS_PARTICIPANT_HANDLER
group Get Participant's FSP Details
hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
if lookup for Oracle based on {CURRENCY} if and only if {CURRENCY} is provided
- SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ SELECT oe.value, oe.centralSwitchEndpointId FROM account_lookup.oracleEndpoint as oe
inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
group Get Participant's FSP Details
and pt.isActive = true
and oe.isActive = true;
else lookup default Oracle if no {CURRENCY} is provided:
- SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ SELECT oe.value, oe.centralSwitchEndpointId FROM account_lookup.oracleEndpoint as oe
inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
where pt.name = '{TYPE}'
group Get Participant's FSP Details
hnote over ALS_DB #lightyellow
oracleEndpoint
+ centralSwitchEndpoint
endpointType
partyIdType
currency
group Get Participant's FSP Details
end group
'********************* Get Switch Config Information - START ************************
- group #73a2c6 REFERENCE: Get Switch Routing Config Sequence
-
- ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Switch Routing information. \nError code: 200x
+ group #73a2c6 REFERENCE: Get Switch Routing Config Sequence [CACHED]
- hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
- if lookup for Switch based on {CURRENCY} if and only if {CURRENCY} is provided
- ****** TBC ******
- else lookup default Switch if no {CURRENCY} is provided:
- ****** TBC ******
- end if
- end note
+ alt if {centralSwitchEndpointId} has been attained from 'REFERENCE: Get Oracle Routing Config Sequence' or if list of oracleEndpoint results is NOT empty
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Switch Routing information. \nError code: 200x
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for switchEndpoint. \nError code: 200x
+ hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
+ select cs.value from account_lookup.centralSwitchEndpoint as cs
+ where centralSwitchEndpointId = {centralSwitchEndpointId from 'REFERENCE: Get Oracle Routing Config Sequence'};
+ end note
- activate ALS_DB
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for switchEndpoint. \nError code: 200x
- hnote over ALS_DB #lightyellow
- ****** TBC ******
- switchEndpoint
- endpointType
- currency
- end note
- ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return switchEndpoint result set.
+ activate ALS_DB
- deactivate ALS_DB
+ hnote over ALS_DB #lightyellow
+ ****** TBC ******
+ centralSwitchEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return switchEndpoint result set.
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: Return switchEndpoint results
+ deactivate ALS_DB
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Throw Error code: 2000 if list of switchEndpoint results is empty.
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: Return switchEndpoint results
+ else
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Throw Error code: 2000
+ end alt
end group
'********************* Get Switch Config Information - END ************************
autonumber
' declare actors
actor "Payer FSP" as PAYER_FSP
+actor "Payee FSP" as PAYEE_FSP
boundary "Account Lookup Service" as ALS_API
control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
entity "ALS CentralService Participant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
-entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+'entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
entity "ALS Parties FSP DAO" as ALS_PARTIES_FSP_DAO
database "ALS Database" as ALS_DB
boundary "Oracle Service API" as ORACLE_API
boundary "Central Service API" as CENTRALSERVICE_API
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
box "Account Lookup Service" #LightYellow
participant ALS_API
participant ALS_PARTICIPANT_HANDLER
box "ALS Oracle Service/Adapter" #LightBlue
participant ORACLE_API
end box
+box "Financial Service Provider" #LightGrey
+participant PAYEE_FSP
+end box
+
' START OF FLOW
group Get Party Details
group Get Party Details
alt oracleEndpoint match found & parties information retrieved
activate ALS_PARTICIPANT_HANDLER
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config. \nError code: 200x, 310x, 320x
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - Get Oracle Routing Config Sequence
+ end ref
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
'********************* Retrieve Switch Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config. \nError code: 200x, 310x, 320x
ref over ALS_PARTICIPANT_HANDLER
GET Participants - Get Switch Routing Config Sequence
end ref
+
'********************* Retrieve Switch Routing Information - END ************************
|||
'********************* Validate Participant - START ************************
group Get Party Details
'********************* Validate Participant - END ************************
|||
- '********************* Retrieve Oracle Routing Information - START ************************
-
- ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config
- ref over ALS_PARTICIPANT_HANDLER
- GET Participants - Get Oracle Routing Config Sequence
- end ref
- '********************* Retrieve Oracle Routing Information - END ************************
- |||
'********************* Request Oracle Participant Information - START ************************
- ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information from
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information for PayeeFSP. \nError code: 200x, 310x, 320x
ref over ALS_PARTICIPANT_HANDLER
GET Participants - Request Participant Information from Oracle Sequence
end ref
database "ALS Database" as ALS_DB
boundary "Oracle Service API" as ORACLE_API
boundary "Central Service API" as CENTRALSERVICE_API
+box "Financial Service Provider" #LightGrey
+participant PAYER_FSP
+end box
+
box "Account Lookup Service" #LightYellow
participant ALS_API
participant ALS_PARTICIPANT_HANDLER
group Post Participant's FSP Details
deactivate ALS_API
activate ALS_PARTICIPANT_HANDLER
- '********************* Retrieve Switch Routing Information - START ************************
-
- ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config
- ref over ALS_PARTICIPANT_HANDLER
- GET Participants - Get Switch Routing Config Sequence
- end ref
-
- '********************* Retrieve Switch Routing Information - END ************************
- |||
-
- '********************* Validate Participant - START ************************
- group Validate Participant
- loop for Participant in ParticipantLis
-
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source. \nError code: 3100
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same. \nError code: 3100
-
- end loop
-
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}. \nError code: 200x
- activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
-
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
- deactivate CENTRALSERVICE_API
-
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
-
- deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
-
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
- end group
- '********************* Validate Participant - END ************************
-
'********************* Sort into Participant buckets based on {TYPE} - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}.
group Post Participant's FSP Details
'********************* Retrieve Oracle Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config. \nError code: 300x, 310x
ref over ALS_PARTICIPANT_HANDLER
GET Participants - Get Oracle Routing Config Sequence
end ref
group Post Participant's FSP Details
'********************* Fetch Oracle Routing Information - END ************************
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config. \nError code: 300x, 310x
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - Get Switch Routing Config Sequence
+ end ref
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant
+ loop for Participant in ParticipantLis
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source. \nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same. \nError code: 3100
+
+ end loop
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}. \nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
'********************* Create Participant Information - START ************************
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-servic
* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
Notes:
-* ALS Oracle API is baed on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
+* ALS Oracle API is based on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
- Operations follow traditional REST API paradigms more strictly.
- Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
- `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
- `GET /participants` response body returns a list of Participants, containing `currency`.
- - `POST /participants` request body includes the `currency` as part of each record.
\ No newline at end of file
+ - `POST /participants` request body includes the `currency` as part of each record.
group Post Participant's FSP Details
deactivate ALS_API
activate ALS_PARTICIPANT_HANDLER
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - Get Switch Routing Config Sequence
+ end ref
+
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
'********************* Validate Participant - START ************************
group Validate Participant
group Post Participant's FSP Details
'********************* Fetch Oracle Routing Information - START ************************
- '********************* Retrieve Switch Routing Information - START ************************
+ '********************* Retrieve Oracle Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config
ref over ALS_PARTICIPANT_HANDLER
- GET Participants - Get Switch Routing Config Sequence
+ GET Participants - Get Oracle Routing Config Sequence
end ref
- '********************* Retrieve Switch Routing Information - END ************************
+ '********************* Retrieve Oracle Routing Information - END ************************
+
|||
+
'********************* Fetch Oracle Routing Information - END ************************
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
* [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
- * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service/README.md)
+ * [GET Participants](mojaloop-technical-overview/account-lookup-service/als-get-participants.md)
+ * [POST Participants](mojaloop-technical-overview/account-lookup-service/als-post-participants.md)
+ * [GET Parties](mojaloop-technical-overview/account-lookup-service/als-get-parties.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
* [Fraud Services](mojaloop-technical-overview/fraud-services.md)
* [APIs](api/README.md)
autonumber
actor "Payer FSP" as PAYER_FSP
boundary "Account Lookup Service" as ALS_API
control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
-entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS Endpoint Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
database "ALS Database" as ALS_DB
boundary "Oracle Service API" as ORACLE_API
-boundary "Oracle Registry Store" as ORACLE_STORE
boundary "Central Service API" as CENTRALSERVICE_API
box "Account Lookup Service" #LightYellow
box "ALS Oracle Service/Adapter" #LightBlue
participant ORACLE_API
end box
-box "Internal/External Oracle Data Store/Service" #LightGrey
-participant ORACLE_STORE
-end box
-
' START OF FLOW
group Get Participant's FSP Details
- PAYER_FSP --> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}.\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+ PAYER_FSP --> ALS_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}.\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
activate ALS_API
ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details.
deactivate ALS_API
- activate ALS_PARTICIPANT_HANDLER
-
- '********************* Fetch Oracle Routing Information - START ************************
-
- ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}. \nError code: 200x
- activate ALS_TYPE_ENDPOINT_CONFIG_DAO
-
- hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
- if {CURRENCY} provided:
- SELECT oe.value FROM account_lookup.oracleEndpoint as oe
- inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
- inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
- inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
- where cu.currencyId = '{CURRENCY}'
- and pt.name = '{TYPE}'
- and pt.isActive = true
- and oe.isActive = true;
- else
- SELECT oe.value FROM account_lookup.oracleEndpoint as oe
- inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
- inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
- where pt.name = '{TYPE}'
- and pt.isActive = true
- and oe.isActive = true
- and oe.isDefault = true;
- end if
- end note
-
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for Oracle End-point. \nError code: 200x *****TBU*****
-
- activate ALS_DB
-
- hnote over ALS_DB #lightyellow
- oracleEndpoint
- endpointType
- partyIdType
- currency
- end note
- ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
- deactivate ALS_DB
-
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
- deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
-
- '********************* Fetch Oracle Routing Information - END ************************
-
- alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type}
- end alt
+
+ alt oracleEndpoint match found
+
+ '********************* Fetch Oracle Routing Config - START ************************
+ group #99cef7 REFERENCE: Get Oracle Routing Config Sequence
+
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {TYPE}. \nError code: 200x
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
+ if lookup for Oracle based on {CURRENCY} if and only if {CURRENCY} is provided
+ SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ where cu.currencyId = '{CURRENCY}'
+ and pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true;
+ else lookup default Oracle if no {CURRENCY} is provided:
+ SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ where pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true
+ and oe.isDefault = true;
+ end if
+ end note
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for oracleEndpoint. \nError code: 200x
+
+ activate ALS_DB
+
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ partyIdType
+ currency
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set.
+
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of oracleEndpoint for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Throw Error code: 3200 if list of oracleEndpoint results is empty.
+
+ end group
+ '********************* Fetch Oracle Routing Information - END ************************
'********************* Request Participant Information from Oracle - START ************************
+ group #599dd1 REFERENCE: Request Participant Information from Oracle Sequence
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}. \nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{TYPE}/{ID}?currency={CURRENCY}. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 310x, 320x
- activate ALS_PARTICIPANT_ORACLE_DAO
- ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate ORACLE_API
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information.
+ deactivate ORACLE_API
- ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
- activate ORACLE_STORE
- ORACLE_STORE -> ORACLE_API: Return participant's FSP details
- deactivate ORACLE_STORE
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
- ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information.
- deactivate ORACLE_API
+ '********************* Request Participant Information from Oracle - END ************************
- ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
- deactivate ALS_PARTICIPANT_ORACLE_DAO
+ end group
- '********************* Request Participant Information from Oracle - END ************************
+ '********************* Get Switch Config Information - START ************************
+ group #73a2c6 REFERENCE: Get Switch Routing Config Sequence
- '********************* Get PayerFSP Participant Information - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Switch Routing information. \nError code: 200x
+
+ hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
+ if lookup for Switch based on {CURRENCY} if and only if {CURRENCY} is provided
+ ****** TBC ******
+ else lookup default Switch if no {CURRENCY} is provided:
+ ****** TBC ******
+ end if
+ end note
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for switchEndpoint. \nError code: 200x
+
+ activate ALS_DB
+
+ hnote over ALS_DB #lightyellow
+ ****** TBC ******
+ switchEndpoint
+ endpointType
+ currency
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return switchEndpoint result set.
+
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: Return switchEndpoint results
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Throw Error code: 2000 if list of switchEndpoint results is empty.
+
+ end group
+ '********************* Get Switch Config Information - END ************************
+
+ '********************* Get PayerFSP Callback End-points - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Participant's FSP Details
ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
'********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
activate ALS_API
- ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}?currency={CURRENCY}
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}?currency={CURRENCY}
deactivate ALS_API
else Empty list of End-Points returned or Error occurred
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
- activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
- deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
- deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT_ERROR`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR`
ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
activate ALS_API
- ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
deactivate ALS_API
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
end alt
deactivate ALS_PARTICIPANT_HANDLER
+
end
@enduml
autonumber
actor "Payer FSP" as PAYER_FSP
boundary "Account Lookup Service" as ALS_API
control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
-entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
entity "ALS CentralService Participant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
entity "ALS Parties FSP DAO" as ALS_PARTIES_FSP_DAO
-entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
database "ALS Database" as ALS_DB
boundary "Oracle Service API" as ORACLE_API
-boundary "Oracle Registry Store" as ORACLE_STORE
boundary "Central Service API" as CENTRALSERVICE_API
box "Account Lookup Service" #LightYellow
participant ALS_API
participant ALS_PARTICIPANT_HANDLER
-participant ALS_TYPE_ENDPOINT_CONFIG_DAO
-participant ALS_PARTICIPANT_ORACLE_DAO
participant ALS_DB
participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
box "ALS Oracle Service/Adapter" #LightBlue
participant ORACLE_API
end box
-box "Internal/External Oracle Data Store/Service" #LightGrey
-participant ORACLE_STORE
-end box
-
' START OF FLOW
group Get Party Details
- PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{Type}/{ID}?currency={CURRENCY}. \nResponse code: 202 \nError code: 200zx, 300x, 310x, 320x
+ PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{TYPE}/{ID}?currency={CURRENCY}. \nResponse code: 202 \nError code: 200zx, 300x, 310x, 320x
activate ALS_API
ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details.
deactivate ALS_API
- activate ALS_PARTICIPANT_HANDLER
- '********************* Validate Participant - START ************************
+ alt oracleEndpoint match found & parties information retrieved
+ activate ALS_PARTICIPANT_HANDLER
- group Validate Participant
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information. \nError code: 200x
- activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+ '********************* Retrieve Switch Routing Information - START ************************
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{fspName}. \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
- deactivate CENTRALSERVICE_API
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - Get Switch Routing Config Sequence
+ end ref
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
-
- deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
-
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
- end group
-
- '********************* Validate Participant - END ************************
-
-
- '********************* Retrieve Oracle Routing Information - START ************************
-
- ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}. \nError code: 200x
- activate ALS_TYPE_ENDPOINT_CONFIG_DAO
-
- hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
- if {CURRENCY} provided:
- SELECT oe.value FROM account_lookup.oracleEndpoint as oe
- inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
- inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
- inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
- where cu.currencyId = '{CURRENCY}'
- and pt.name = '{TYPE}'
- and pt.isActive = true
- and oe.isActive = true;
- else
- SELECT oe.value FROM account_lookup.oracleEndpoint as oe
- inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
- inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
- where pt.name = '{TYPE}'
- and pt.isActive = true
- and oe.isActive = true
- and oe.isDefault = true;
- end if
- end note
-
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for Oracle End-point. \nError code: 200x
-
- activate ALS_DB
- hnote over ALS_DB #lightyellow
- oracleEndpoint
- oracleType
- endpointType
- end note
- ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
- deactivate ALS_DB
-
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
- deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
+ '********************* Validate Participant - START ************************
- '********************* Retrieve Oracle Routing Information - END ************************
+ group Validate FSPIOP-Source Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request FSPIOP-Source participant information. \nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
- alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{FSPIOP-Source}. \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return FSPIOP-Source participant information
+ deactivate CENTRALSERVICE_API
- '********************* Request Oracle Participant Information - START ************************
- alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type}.
- end alt
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return FSPIOP-Source participant information
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 3100, 3200
- activate ALS_PARTICIPANT_ORACLE_DAO
- ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 3100, 3200
- activate ORACLE_API
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
- ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
- activate ORACLE_STORE
- ORACLE_STORE -> ORACLE_API: Return participant's FSP details
- deactivate ORACLE_STORE
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate FSPIOP-Source participant. \nError code: 320x
+ end group
- ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information.
- deactivate ORACLE_API
+ '********************* Validate Participant - END ************************
+ |||
+ '********************* Retrieve Oracle Routing Information - START ************************
- ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
- deactivate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Oracle Routing Config
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - Get Oracle Routing Config Sequence
+ end ref
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Destination Participant Callback End-point. \nError code: 200x
- activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Destination Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Destination Participant Callback End-points
- deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Destination Participant Callback End-points
- deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ '********************* Retrieve Oracle Routing Information - END ************************
+ |||
+ '********************* Request Oracle Participant Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Destination Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_GET`
+ ALS_PARTICIPANT_HANDLER ORACLE_API: Get Participant Information from
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - Request Participant Information from Oracle Sequence
+ end ref
'********************* Request Oracle Participant Information - END ************************
-
+ |||
'********************* Request Parties Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_PARTIES_FSP_DAO: Request Parties information from FSP.\nError code: 200x
activate ALS_PARTIES_FSP_DAO
- ALS_PARTIES_FSP_DAO --> PAYEE_FSP: Parties Callback to Destination: GET - /parties/{Type}/{ID}?currency={CURRENCY}. \nResponse code: 202 \nError code: 200x, 310x, 320x
+ ALS_PARTIES_FSP_DAO --> PAYEE_FSP: Parties Callback to Destination: GET - /parties/{TYPE}/{ID}?currency={CURRENCY}. \nResponse code: 202 \nError code: 200x, 310x, 320x
deactivate ALS_PARTIES_FSP_DAO
activate PAYEE_FSP
- PAYEE_FSP --> ALS_API: Callback with Participant Information: PUT - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 300x, 310x, 320x
+ PAYEE_FSP --> ALS_API: Callback with Participant Information: PUT - /parties/{TYPE}/{ID}?currency={CURRENCY}. \nError code: 200x, 300x, 310x, 320x
deactivate PAYEE_FSP
activate ALS_API
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_API: Send Participant Information to PayerFSP.
activate ALS_API
- ALS_API --> PAYER_FSP: Callback with Parties Information: PUT - /parties/{Type}/{ID}?currency={CURRENCY}
+ ALS_API --> PAYER_FSP: Callback with Parties Information: PUT - /parties/{TYPE}/{ID}?currency={CURRENCY}
deactivate ALS_API
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
activate ALS_API
- ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
deactivate ALS_API
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- '********************* Get PayeeFSP Participant Information - START ************************
+ '********************* Get PayeeFSP Participant Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
- activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayeeFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayeeFSP Participant Callback End-points
- deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayeeFSP Participant Callback End-points
- deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayeeFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayeeFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayeeFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR`
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
- ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
- activate ALS_API
- ALS_API --> PAYEE_FSP: Callback: PUT - /participants/{Type}/{ID}/error
- deactivate ALS_API
- end alt
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
+ activate ALS_API
+ ALS_API --> PAYEE_FSP: Callback: PUT - /participants/{TYPE}/{ID}/error
+ deactivate ALS_API
+ else Empty list of switchEndpoint results returned
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Handle error\nError code: 200x
+ hnote right ALS_PARTICIPANT_HANDLER #red
+ Error Handling Framework
+ end note
+ end alt
deactivate ALS_PARTICIPANT_HANDLER
end
autonumber
actor "Payer FSP" as PAYER_FSP
boundary "Account Lookup Service" as ALS_API
control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
-entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
entity "ALS CentralService Participant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
database "ALS Database" as ALS_DB
boundary "Oracle Service API" as ORACLE_API
-boundary "Oracle Registry Store" as ORACLE_STORE
boundary "Central Service API" as CENTRALSERVICE_API
box "Account Lookup Service" #LightYellow
participant ALS_API
participant ALS_PARTICIPANT_HANDLER
-participant ALS_TYPE_ENDPOINT_CONFIG_DAO
participant ALS_PARTICIPANT_ORACLE_DAO
participant ALS_DB
participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
box "ALS Oracle Service/Adapter" #LightBlue
participant ORACLE_API
end box
-box "Internal/External Oracle Data Store/Service" #LightGrey
-participant ORACLE_STORE
-end box
-
' START OF FLOW
group Post Participant's FSP Details
- PAYER_FSP --> ALS_API: Request to add participant's FSP details POST - /participants. \nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
- hnote over ALS_API #lightyellow
- "POST /participant" operation only supports requests which contain:
- - All Participant's FSPs match the FSPIOP-Source
- - All Participant's TYPEs are the same
+ note right of PAYER_FSP #yellow
+ Headers - postParticipantsHeaders: {
+ Content-Length: ,
+ Content-Type: ,
+ Date: ,
+ X-Forwarded-For: ,
+ FSPIOP-Source: ,
+ FSPIOP-Destination: ,
+ FSPIOP-Encryption: ,
+ FSPIOP-Signature: ,
+ FSPIOP-URI: ,
+ FSPIOP-HTTP-Method:
+ }
+
+ Payload - postParticipantsMessage:
+ {
+ "requestId": "string",
+ "partyList": [
+ {
+ "partyIdType": "string",
+ "partyIdentifier": "string",
+ "partySubIdOrType": "string",
+ "fspId": "string"
+ }
+ ],
+ "currency": "string"
+ }
end note
+ PAYER_FSP --> ALS_API: Request to add participant's FSP details POST - /participants. \nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+' hnote over ALS_API #lightyellow
+' "POST /participant" operation only supports requests which contain:
+' - All Participant's FSPs match the FSPIOP-Source
+' - All Participant's TYPEs are the same
+' - All Participant's will be of the same Currency
+' end note
activate ALS_API
ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
group Post Participant's FSP Details
'********************* Fetch Oracle Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {TYPE}. \nError code: 200x
- activate ALS_TYPE_ENDPOINT_CONFIG_DAO
-
- hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
- if {CURRENCY} provided:
- SELECT oe.value FROM account_lookup.oracleEndpoint as oe
- inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
- inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
- inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
- where cu.currencyId = '{CURRENCY}'
- and pt.name = '{TYPE}'
- and pt.isActive = true
- and oe.isActive = true;
- else
- SELECT oe.value FROM account_lookup.oracleEndpoint as oe
- inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
- inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
- where pt.name = '{TYPE}'
- and pt.isActive = true
- and oe.isActive = true
- and oe.isDefault = true;
- end if
- end note
-
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for Oracle End-point. \nError code: 200x
-
- activate ALS_DB
- hnote over ALS_DB #lightyellow
- oracleEndpoint
- oracleType
- endpointType
- end note
- ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
- deactivate ALS_DB
-
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
- deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ '********************* Retrieve Switch Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER ALS_DB: Get Switch Routing Config
+ ref over ALS_PARTICIPANT_HANDLER
+ GET Participants - Get Switch Routing Config Sequence
+ end ref
+ '********************* Retrieve Switch Routing Information - END ************************
+ |||
'********************* Fetch Oracle Routing Information - END ************************
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {TYPE}
- end alt
'********************* Create Participant Information - START ************************
group Post Participant's FSP Details
ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details POST - /participants. \nResponse code: 204 \nError code: 200x, 310x, 320x
activate ORACLE_API
- ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
- activate ORACLE_STORE
- ORACLE_STORE -> ORACLE_API: Return participant's FSP details
- deactivate ORACLE_STORE
-
ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request.
deactivate ORACLE_API
+# GET Participants
+
+## Sequence Diagram
+
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
+# GET Parties
+
+## Sequence Diagram
+
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-parties-7.2.0.plantuml" }
+```
+# Sequence Diagram for POST Participants
+
+## Notes
+- Operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
+ - All Participant's will be of the same Currency as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+
+## Sequence Diagram
+
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-post-participants-7.2.1.plantuml" }
+```
-# APIs Specifications
+# API Specifications
## Mojaloop API
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-servic
* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
+Notes:
+* ALS Oracle API is baed on the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) with the following main differences:
+ - Operations follow traditional REST API paradigms more strictly.
+ - Operations are **synchronous** with an immediate response unlike [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) which provides a responds via **asynchronous callbacks**.
+ - `PUT /participants` is to update existing records and not a Callback as per the [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+ - `GET /participants` response body returns a list of Participants, containing `currency`.
+ - `POST /participants` request body includes the `currency` as part of each record.
\ No newline at end of file
This component (or back-end systems) will also be responsible for the persistenc
### 4.1 ALS Database Schema
#### Notes
-- `partIdType` - Values are currently seeded as per section _`7.5.6`_ [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}).
+- `partyIdType` - Values are currently seeded as per section _`7.5.6`_ [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}).
- `currency` - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
- `endPointType` - Type identifier for the end-point (e.g. `URL`) which provides flexibility for future transport support.
- `migration*` - Meta-data tables used by Knex Framework engine.
This component (or back-end systems) will also be responsible for the persistenc
* [Acount Lookup Service DBeaver ERD](../assets/Diagrams/EntityRelationshipDiagrams/AccountLookupDB-schema-DBeaver.erd)
* [Acount Lookup Service MySQL Workbench Export](../assets/Diagrams/EntityRelationshipDiagrams/AccountLookup-ddl-MySQLWorkbench.sql)
-### 4.2 Oracle Database Schema
+## 5 ALS Oracle Design
-This is optional & is dependant on the Oracle's requirements & design.
+Detail design for the Oracle is out of scope for this document. The Oracle design and implementation is specific to each Oracle's requirements.
+
+### 5.1 API Specification
+
+Refer to **ALS Oracle API Specification** in the [API Specifications](../api#als-oracle-api) section.
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ pytho
WORKDIR /opt/gitbook/repo
-RUN npm ci
-
-RUN apk del build-dependencies
+RUN npm install
+#
+#RUN apk del build-dependencies
EXPOSE 8989
+RUN npm run gitbook:install
+
+RUN npm run gitbook:build
+
CMD npm run gitbook:serve
+-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64)
+--
+-- Host: 127.0.0.1 Database: account_lookup
+-- ------------------------------------------------------
+-- Server version 8.0.12
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `currency`
+--
+
+DROP TABLE IF EXISTS `currency`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `currency` (
+ `currencyId` varchar(3) NOT NULL,
+ `name` varchar(128) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`currencyId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `currency`
+--
+
+LOCK TABLES `currency` WRITE;
+/*!40000 ALTER TABLE `currency` DISABLE KEYS */;
+INSERT INTO `currency` VALUES ('AED','UAE dirham',1,'2019-03-13 11:38:59'),('AFA','Afghanistan afghani (obsolete)',1,'2019-03-13 11:38:59'),('AFN','Afghanistan afghani',1,'2019-03-13 11:38:59'),('ALL','Albanian lek',1,'2019-03-13 11:38:59'),('AMD','Armenian dram',1,'2019-03-13 11:38:59'),('ANG','Netherlands Antillian guilder',1,'2019-03-13 11:38:59'),('AOA','Angolan kwanza',1,'2019-03-13 11:38:59'),('AOR','Angolan kwanza reajustado',1,'2019-03-13 11:38:59'),('ARS','Argentine peso',1,'2019-03-13 11:38:59'),('AUD','Australian dollar',1,'2019-03-13 11:38:59'),('AWG','Aruban guilder',1,'2019-03-13 11:38:59'),('AZN','Azerbaijanian new manat',1,'2019-03-13 11:38:59'),('BAM','Bosnia-Herzegovina convertible mark',1,'2019-03-13 11:38:59'),('BBD','Barbados dollar',1,'2019-03-13 11:38:59'),('BDT','Bangladeshi taka',1,'2019-03-13 11:38:59'),('BGN','Bulgarian lev',1,'2019-03-13 11:38:59'),('BHD','Bahraini dinar',1,'2019-03-13 11:38:59'),('BIF','Burundi franc',1,'2019-03-13 11:38:59'),('BMD','Bermudian dollar',1,'2019-03-13 11:38:59'),('BND','Brunei dollar',1,'2019-03-13 11:38:59'),('BOB','Bolivian boliviano',1,'2019-03-13 11:38:59'),('BRL','Brazilian real',1,'2019-03-13 11:38:59'),('BSD','Bahamian dollar',1,'2019-03-13 11:38:59'),('BTN','Bhutan ngultrum',1,'2019-03-13 11:38:59'),('BWP','Botswana pula',1,'2019-03-13 11:38:59'),('BYN','Belarusian ruble',1,'2019-03-13 11:38:59'),('BZD','Belize dollar',1,'2019-03-13 11:38:59'),('CAD','Canadian dollar',1,'2019-03-13 11:38:59'),('CDF','Congolese franc',1,'2019-03-13 11:38:59'),('CHF','Swiss franc',1,'2019-03-13 11:38:59'),('CLP','Chilean peso',1,'2019-03-13 11:38:59'),('CNY','Chinese yuan renminbi',1,'2019-03-13 11:38:59'),('COP','Colombian peso',1,'2019-03-13 11:38:59'),('CRC','Costa Rican colon',1,'2019-03-13 11:38:59'),('CUC','Cuban convertible peso',1,'2019-03-13 11:38:59'),('CUP','Cuban peso',1,'2019-03-13 11:38:59'),('CVE','Cape Verde escudo',1,'2019-03-13 11:38:59'),('CZK','Czech koruna',1,'2019-03-13 11:38:59'),('DJF','Djibouti franc',1,'2019-03-13 11:38:59'),('DKK','Danish krone',1,'2019-03-13 11:38:59'),('DOP','Dominican peso',1,'2019-03-13 11:38:59'),('DZD','Algerian dinar',1,'2019-03-13 11:38:59'),('EEK','Estonian kroon',1,'2019-03-13 11:38:59'),('EGP','Egyptian pound',1,'2019-03-13 11:38:59'),('ERN','Eritrean nakfa',1,'2019-03-13 11:38:59'),('ETB','Ethiopian birr',1,'2019-03-13 11:38:59'),('EUR','EU euro',1,'2019-03-13 11:38:59'),('FJD','Fiji dollar',1,'2019-03-13 11:38:59'),('FKP','Falkland Islands pound',1,'2019-03-13 11:38:59'),('GBP','British pound',1,'2019-03-13 11:38:59'),('GEL','Georgian lari',1,'2019-03-13 11:38:59'),('GGP','Guernsey pound',1,'2019-03-13 11:38:59'),('GHS','Ghanaian new cedi',1,'2019-03-13 11:38:59'),('GIP','Gibraltar pound',1,'2019-03-13 11:38:59'),('GMD','Gambian dalasi',1,'2019-03-13 11:38:59'),('GNF','Guinean franc',1,'2019-03-13 11:38:59'),('GTQ','Guatemalan quetzal',1,'2019-03-13 11:38:59'),('GYD','Guyana dollar',1,'2019-03-13 11:38:59'),('HKD','Hong Kong SAR dollar',1,'2019-03-13 11:38:59'),('HNL','Honduran lempira',1,'2019-03-13 11:38:59'),('HRK','Croatian kuna',1,'2019-03-13 11:38:59'),('HTG','Haitian gourde',1,'2019-03-13 11:38:59'),('HUF','Hungarian forint',1,'2019-03-13 11:38:59'),('IDR','Indonesian rupiah',1,'2019-03-13 11:38:59'),('ILS','Israeli new shekel',1,'2019-03-13 11:38:59'),('IMP','Isle of Man pound',1,'2019-03-13 11:38:59'),('INR','Indian rupee',1,'2019-03-13 11:38:59'),('IQD','Iraqi dinar',1,'2019-03-13 11:38:59'),('IRR','Iranian rial',1,'2019-03-13 11:38:59'),('ISK','Icelandic krona',1,'2019-03-13 11:38:59'),('JEP','Jersey pound',1,'2019-03-13 11:38:59'),('JMD','Jamaican dollar',1,'2019-03-13 11:38:59'),('JOD','Jordanian dinar',1,'2019-03-13 11:38:59'),('JPY','Japanese yen',1,'2019-03-13 11:38:59'),('KES','Kenyan shilling',1,'2019-03-13 11:38:59'),('KGS','Kyrgyz som',1,'2019-03-13 11:38:59'),('KHR','Cambodian riel',1,'2019-03-13 11:38:59'),('KMF','Comoros franc',1,'2019-03-13 11:38:59'),('KPW','North Korean won',1,'2019-03-13 11:38:59'),('KRW','South Korean won',1,'2019-03-13 11:38:59'),('KWD','Kuwaiti dinar',1,'2019-03-13 11:38:59'),('KYD','Cayman Islands dollar',1,'2019-03-13 11:38:59'),('KZT','Kazakh tenge',1,'2019-03-13 11:38:59'),('LAK','Lao kip',1,'2019-03-13 11:38:59'),('LBP','Lebanese pound',1,'2019-03-13 11:38:59'),('LKR','Sri Lanka rupee',1,'2019-03-13 11:38:59'),('LRD','Liberian dollar',1,'2019-03-13 11:38:59'),('LSL','Lesotho loti',1,'2019-03-13 11:38:59'),('LTL','Lithuanian litas',1,'2019-03-13 11:38:59'),('LVL','Latvian lats',1,'2019-03-13 11:38:59'),('LYD','Libyan dinar',1,'2019-03-13 11:38:59'),('MAD','Moroccan dirham',1,'2019-03-13 11:38:59'),('MDL','Moldovan leu',1,'2019-03-13 11:38:59'),('MGA','Malagasy ariary',1,'2019-03-13 11:38:59'),('MKD','Macedonian denar',1,'2019-03-13 11:38:59'),('MMK','Myanmar kyat',1,'2019-03-13 11:38:59'),('MNT','Mongolian tugrik',1,'2019-03-13 11:38:59'),('MOP','Macao SAR pataca',1,'2019-03-13 11:38:59'),('MRO','Mauritanian ouguiya',1,'2019-03-13 11:38:59'),('MUR','Mauritius rupee',1,'2019-03-13 11:38:59'),('MVR','Maldivian rufiyaa',1,'2019-03-13 11:38:59'),('MWK','Malawi kwacha',1,'2019-03-13 11:38:59'),('MXN','Mexican peso',1,'2019-03-13 11:38:59'),('MYR','Malaysian ringgit',1,'2019-03-13 11:38:59'),('MZN','Mozambique new metical',1,'2019-03-13 11:38:59'),('NAD','Namibian dollar',1,'2019-03-13 11:38:59'),('NGN','Nigerian naira',1,'2019-03-13 11:38:59'),('NIO','Nicaraguan cordoba oro',1,'2019-03-13 11:38:59'),('NOK','Norwegian krone',1,'2019-03-13 11:38:59'),('NPR','Nepalese rupee',1,'2019-03-13 11:38:59'),('NZD','New Zealand dollar',1,'2019-03-13 11:38:59'),('OMR','Omani rial',1,'2019-03-13 11:38:59'),('PAB','Panamanian balboa',1,'2019-03-13 11:38:59'),('PEN','Peruvian nuevo sol',1,'2019-03-13 11:38:59'),('PGK','Papua New Guinea kina',1,'2019-03-13 11:38:59'),('PHP','Philippine peso',1,'2019-03-13 11:38:59'),('PKR','Pakistani rupee',1,'2019-03-13 11:38:59'),('PLN','Polish zloty',1,'2019-03-13 11:38:59'),('PYG','Paraguayan guarani',1,'2019-03-13 11:38:59'),('QAR','Qatari rial',1,'2019-03-13 11:38:59'),('RON','Romanian new leu',1,'2019-03-13 11:38:59'),('RSD','Serbian dinar',1,'2019-03-13 11:38:59'),('RUB','Russian ruble',1,'2019-03-13 11:38:59'),('RWF','Rwandan franc',1,'2019-03-13 11:38:59'),('SAR','Saudi riyal',1,'2019-03-13 11:38:59'),('SBD','Solomon Islands dollar',1,'2019-03-13 11:38:59'),('SCR','Seychelles rupee',1,'2019-03-13 11:38:59'),('SDG','Sudanese pound',1,'2019-03-13 11:38:59'),('SEK','Swedish krona',1,'2019-03-13 11:38:59'),('SGD','Singapore dollar',1,'2019-03-13 11:38:59'),('SHP','Saint Helena pound',1,'2019-03-13 11:38:59'),('SLL','Sierra Leone leone',1,'2019-03-13 11:38:59'),('SOS','Somali shilling',1,'2019-03-13 11:38:59'),('SPL','Seborgan luigino',1,'2019-03-13 11:38:59'),('SRD','Suriname dollar',1,'2019-03-13 11:38:59'),('STD','Sao Tome and Principe dobra',1,'2019-03-13 11:38:59'),('SVC','El Salvador colon',1,'2019-03-13 11:38:59'),('SYP','Syrian pound',1,'2019-03-13 11:38:59'),('SZL','Swaziland lilangeni',1,'2019-03-13 11:38:59'),('THB','Thai baht',1,'2019-03-13 11:38:59'),('TJS','Tajik somoni',1,'2019-03-13 11:38:59'),('TMT','Turkmen new manat',1,'2019-03-13 11:38:59'),('TND','Tunisian dinar',1,'2019-03-13 11:38:59'),('TOP','Tongan pa\'anga',1,'2019-03-13 11:38:59'),('TRY','Turkish lira',1,'2019-03-13 11:38:59'),('TTD','Trinidad and Tobago dollar',1,'2019-03-13 11:38:59'),('TVD','Tuvaluan dollar',1,'2019-03-13 11:38:59'),('TWD','Taiwan New dollar',1,'2019-03-13 11:38:59'),('TZS','Tanzanian shilling',1,'2019-03-13 11:38:59'),('UAH','Ukrainian hryvnia',1,'2019-03-13 11:38:59'),('UGX','Uganda new shilling',1,'2019-03-13 11:38:59'),('USD','US dollar',1,'2019-03-13 11:38:59'),('UYU','Uruguayan peso uruguayo',1,'2019-03-13 11:38:59'),('UZS','Uzbekistani sum',1,'2019-03-13 11:38:59'),('VEF','Venezuelan bolivar fuerte',1,'2019-03-13 11:38:59'),('VND','Vietnamese dong',1,'2019-03-13 11:38:59'),('VUV','Vanuatu vatu',1,'2019-03-13 11:38:59'),('WST','Samoan tala',1,'2019-03-13 11:38:59'),('XAF','CFA franc BEAC',1,'2019-03-13 11:38:59'),('XAG','Silver (ounce)',1,'2019-03-13 11:38:59'),('XAU','Gold (ounce)',1,'2019-03-13 11:38:59'),('XCD','East Caribbean dollar',1,'2019-03-13 11:38:59'),('XDR','IMF special drawing right',1,'2019-03-13 11:38:59'),('XFO','Gold franc',1,'2019-03-13 11:38:59'),('XFU','UIC franc',1,'2019-03-13 11:38:59'),('XOF','CFA franc BCEAO',1,'2019-03-13 11:38:59'),('XPD','Palladium (ounce)',1,'2019-03-13 11:38:59'),('XPF','CFP franc',1,'2019-03-13 11:38:59'),('XPT','Platinum (ounce)',1,'2019-03-13 11:38:59'),('YER','Yemeni rial',1,'2019-03-13 11:38:59'),('ZAR','South African rand',1,'2019-03-13 11:38:59'),('ZMK','Zambian kwacha (obsolete)',1,'2019-03-13 11:38:59'),('ZMW','Zambian kwacha',1,'2019-03-13 11:38:59'),('ZWD','Zimbabwe dollar (initial)',1,'2019-03-13 11:38:59'),('ZWL','Zimbabwe dollar (3rd denomination)',1,'2019-03-13 11:38:59'),('ZWN','Zimbabwe dollar (1st denomination)',1,'2019-03-13 11:38:59'),('ZWR','Zimbabwe dollar (2nd denomination)',1,'2019-03-13 11:38:59');
+/*!40000 ALTER TABLE `currency` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `endpointType`
+--
+
+DROP TABLE IF EXISTS `endpointType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `endpointType` (
+ `endpointTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `type` varchar(50) NOT NULL,
+ `description` varchar(512) DEFAULT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`endpointTypeId`),
+ UNIQUE KEY `endpointtype_type_unique` (`type`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `endpointType`
+--
+
+LOCK TABLES `endpointType` WRITE;
+/*!40000 ALTER TABLE `endpointType` DISABLE KEYS */;
+INSERT INTO `endpointType` VALUES (1,'URL','REST URLs',1,'2019-03-13 11:38:59');
+/*!40000 ALTER TABLE `endpointType` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oracleEndpoint`
+--
+
+DROP TABLE IF EXISTS `oracleEndpoint`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oracleEndpoint` (
+ `oracleEndpointId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `partyIdTypeId` int(10) unsigned NOT NULL,
+ `endpointTypeId` int(10) unsigned NOT NULL,
+ `currencyId` varchar(255) DEFAULT NULL,
+ `value` varchar(512) NOT NULL,
+ `isDefault` tinyint(1) NOT NULL DEFAULT '0',
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `createdBy` varchar(128) NOT NULL,
+ PRIMARY KEY (`oracleEndpointId`),
+ KEY `oracleendpoint_currencyid_foreign` (`currencyId`),
+ KEY `oracleendpoint_partyidtypeid_index` (`partyIdTypeId`),
+ KEY `oracleendpoint_endpointtypeid_index` (`endpointTypeId`),
+ CONSTRAINT `oracleendpoint_currencyid_foreign` FOREIGN KEY (`currencyId`) REFERENCES `currency` (`currencyid`),
+ CONSTRAINT `oracleendpoint_endpointtypeid_foreign` FOREIGN KEY (`endpointTypeId`) REFERENCES `endpointType` (`endpointtypeid`),
+ CONSTRAINT `oracleendpoint_partyidtypeid_foreign` FOREIGN KEY (`partyIdTypeId`) REFERENCES `partyIdType` (`partyidtypeid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oracleEndpoint`
+--
+
+LOCK TABLES `oracleEndpoint` WRITE;
+/*!40000 ALTER TABLE `oracleEndpoint` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oracleEndpoint` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `partyIdType`
+--
+
+DROP TABLE IF EXISTS `partyIdType`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `partyIdType` (
+ `partyIdTypeId` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL,
+ `description` varchar(512) NOT NULL,
+ `isActive` tinyint(1) NOT NULL DEFAULT '1',
+ `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`partyIdTypeId`),
+ UNIQUE KEY `partyidtype_name_unique` (`name`)
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `partyIdType`
+--
+
+LOCK TABLES `partyIdType` WRITE;
+/*!40000 ALTER TABLE `partyIdType` DISABLE KEYS */;
+INSERT INTO `partyIdType` VALUES (1,'MSISDN','A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.',1,'2019-03-13 11:38:59'),(2,'EMAIL','An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.',1,'2019-03-13 11:38:59'),(3,'PERSONAL_ID','A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.',1,'2019-03-13 11:38:59'),(4,'BUSINESS','A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.',1,'2019-03-13 11:38:59'),(5,'DEVICE','A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.',1,'2019-03-13 11:38:59'),(6,'ACCOUNT_ID','A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.',1,'2019-03-13 11:38:59'),(7,'IBAN','A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.',1,'2019-03-13 11:38:59'),(8,'ALIAS','An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.',1,'2019-03-13 11:38:59');
+/*!40000 ALTER TABLE `partyIdType` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2019-03-13 14:11:19
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
+@startuml
+
+hide circle
+hide empty members
+
+entity Entity {
+ * identifying_attribute
+ --
+ * mandatory_attribute
+ optional_attribute
+}
+
+' zero or one
+A |o--o| B
+
+' exactly one
+C ||--|| D
+
+' zero or many
+E }o--o{ F
+
+' one or many
+G }|--|{ H
+
+H }|--|{ E
+
+
+@enduml
\ No newline at end of file
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}. \nError code: 200x
activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
+ if {CURRENCY} provided:
+ SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ where cu.currencyId = '{CURRENCY}'
+ and pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true;
+ else
+ SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ where pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true
+ and oe.isDefault = true;
+ end if
+ end note
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for Oracle End-point. \nError code: 200x *****TBU*****
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x *****TBU*****
activate ALS_DB
- hnote over ALS_DB #lightyellow
- oracleEndpoint
- oracleType
- endpointType
- end note
+
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ partyIdType
+ currency
+ end note
ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
deactivate ALS_DB
group Get Party Details
ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}. \nError code: 200x
activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
+ if {CURRENCY} provided:
+ SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ where cu.currencyId = '{CURRENCY}'
+ and pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true;
+ else
+ SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ where pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true
+ and oe.isDefault = true;
+ end if
+ end note
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for Oracle End-point. \nError code: 200x
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x *****TBU*****
activate ALS_DB
hnote over ALS_DB #lightyellow
oracleEndpoint
group Post Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {TYPE}. \nError code: 200x
activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ hnote over ALS_TYPE_ENDPOINT_CONFIG_DAO #lightyellow
+ if {CURRENCY} provided:
+ SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.currency as cu on oe.currencyId = cu.currencyId
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ where cu.currencyId = '{CURRENCY}'
+ and pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true;
+ else
+ SELECT oe.value FROM account_lookup.oracleEndpoint as oe
+ inner join account_lookup.endpointType as et on oe.endpointTypeId = et.endpointTypeId
+ inner join account_lookup.partyIdType as pt on oe.partyIdTypeId = pt.partyIdTypeId
+ where pt.name = '{TYPE}'
+ and pt.isActive = true
+ and oe.isActive = true
+ and oe.isDefault = true;
+ end if
+ end note
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: SQL Select for Oracle End-point. \nError code: 200x
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x *****TBU*****
activate ALS_DB
hnote over ALS_DB #lightyellow
oracleEndpoint
This component (or back-end systems) will also be responsible for the persistenc
#### 2.2.2 POST Participant
+#### Notes
+- Operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
+
```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-post-participants-7.2.1.plantuml" }
```
This component (or back-end systems) will also be responsible for the persistenc
### 4.1 ALS Database Schema
-Work in progress..
+#### Notes
+- `partIdType` - Values are currently seeded as per section _`7.5.6`_ [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}).
+- `currency` - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+- `endPointType` - Type identifier for the end-point (e.g. `URL`) which provides flexibility for future transport support.
+- `migration*` - Meta-data tables used by Knex Framework engine.
+
+
+
+* [Acount Lookup Service DBeaver ERD](../assets/Diagrams/EntityRelationshipDiagrams/AccountLookupDB-schema-DBeaver.erd)
+* [Acount Lookup Service MySQL Workbench Export](../assets/Diagrams/EntityRelationshipDiagrams/AccountLookup-ddl-MySQLWorkbench.sql)
### 4.2 Oracle Database Schema
@startuml
' declate title
-title 7.1.0 Get Psh arties Details
+title 7.1.0 Get Party Details
autonumber
' Actor Keys:
end box
' START OF FLOW
-group Get Participant's FSP Details
+group Get Party Details
PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{Type}/{ID}?currency={CURRENCY}. \nResponse code: 202 \nError code: 200zx, 300x, 310x, 320x
activate ALS_API
ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
group Get Participant's FSP Details
'********************* Validate Participant - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information. \nError code: 200x
- activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+ group Validate Participant
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information. \nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{fspName}. \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
- deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{fspName}. \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
- deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
+ end group
'********************* Validate Participant - END ************************
group Get Participant's FSP Details
ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Destination Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Destination Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Destination Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_GET`
'********************* Request Oracle Participant Information - END ************************
group Get Participant's FSP Details
ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_GET_PUT`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_PUT`
'********************* Get PayerFSP Participant Information - END ************************
group Get Participant's FSP Details
ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_GET_PUT_ERROR`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR`
'********************* Get PayerFSP Participant Information - END ************************
group Get Participant's FSP Details
ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayeeFSP Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_GET_PUT_ERROR`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR`
'********************* Get PayerFSP Participant Information - END ************************
end box
group Post Participant's FSP Details
PAYER_FSP --> ALS_API: Request to add participant's FSP details POST - /participants. \nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+ hnote over ALS_API #lightyellow
+ "POST /participant" operation only supports requests which contain:
+ - All Participant's FSPs match the FSPIOP-Source
+ - All Participant's TYPEs are the same
+ end note
activate ALS_API
ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
group Post Participant's FSP Details
deactivate ALS_API
activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Validate Participant - START ************************
+ group Validate Participant
+ loop for Participant in ParticipantLis
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate that Participant == FSPIOP-Source. \nError code: 3100
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate all {TYPES} are the same. \nError code: 3100
+
+ end loop
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}. \nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
+ end group
+ '********************* Validate Participant - END ************************
+
'********************* Sort into Participant buckets based on {TYPE} - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}.
- hnote over ALS_PARTICIPANT_HANDLER #lightyellow
- let ParticipantMap[{TYPE}] = List of Participants with {TYPE}
- end note
+
'********************* Sort into Participant buckets based on {TYPE} - END ************************
loop for keys in ParticipantMap -> TYPE
group Post Participant's FSP Details
'********************* Fetch Oracle Routing Information - END ************************
- loop for list in ParticipantMap{TYPE} -> PARTICIPANT
- '********************* Validate Participant - START ************************
-
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}. \nError code: 200x
- activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
-
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
- deactivate CENTRALSERVICE_API
-
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
-
- deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
-
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
-
- '********************* Validate Participant - END ************************
-
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {TYPE}
- end alt
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {TYPE}
+ end alt
- '********************* Create Participant Information - START ************************
+ '********************* Create Participant Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details POST - /participants. \nError code: 200x, 310x, 320x
- activate ALS_PARTICIPANT_ORACLE_DAO
- ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details POST - /participants. \nResponse code: 204 \nError code: 200x, 310x, 320x
- activate ORACLE_API
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details POST - /participants. \nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details POST - /participants. \nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
- ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
- activate ORACLE_STORE
- ORACLE_STORE -> ORACLE_API: Return participant's FSP details
- deactivate ORACLE_STORE
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
- ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request.
- deactivate ORACLE_API
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request.
+ deactivate ORACLE_API
- ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
- deactivate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
- '********************* Create Participant Information - END ************************
+ '********************* Create Participant Information - END ************************
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
- activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
- deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
- deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_POST_PUT`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT`
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
- ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
- activate ALS_API
- ALS_API --> PAYER_FSP: Callback: PUT - /participants/{ID}
- deactivate ALS_API
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{requestId}
+ deactivate ALS_API
- else Empty list of End-Points returned or Error occurred
+ else Empty list of End-Points returned or Error occurred
- '********************* Get PayerFSP Participant Information - START ************************
+ '********************* Get PayerFSP Participant Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
- activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
- deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
- deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_POST_PUT_ERROR`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR`
- '********************* Get PayerFSP Participant Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
- ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
- activate ALS_API
- ALS_API --> PAYER_FSP: Callback: PUT - /participants/{ID}/error
- deactivate ALS_API
- end alt
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{requestId}/error
+ deactivate ALS_API
+ end alt
- deactivate ALS_PARTICIPANT_HANDLER
- end loop
+ deactivate ALS_PARTICIPANT_HANDLER
end loop
end
@enduml
RUN apk del build-dependencies
EXPOSE 8989
-CMD npm run docs:serve
+CMD npm run gitbook:serve
group Get Participant's FSP Details
'********************* Fetch Oracle Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 200x
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}. \nError code: 200x
activate ALS_TYPE_ENDPOINT_CONFIG_DAO
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x *****TBU*****
activate ALS_DB
hnote over ALS_DB #lightyellow
oracleEndpoint
+ oracleType
endpointType
end note
ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
group Get Participant's FSP Details
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type}
end alt
'********************* Request Participant Information from Oracle - START ************************
group Get Participant's FSP Details
ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
deactivate ALS_PARTICIPANT_ORACLE_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
+ '********************* Request Participant Information from Oracle - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT`
- '********************* Request Participant Information from Oracle - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
group Get Participant's FSP Details
'********************* Retrieve Oracle Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 200x
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}. \nError code: 200x
activate ALS_TYPE_ENDPOINT_CONFIG_DAO
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x *****TBU*****
activate ALS_DB
hnote over ALS_DB #lightyellow
oracleEndpoint
+ oracleType
endpointType
end note
ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
group Get Participant's FSP Details
'********************* Request Oracle Participant Information - START ************************
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}.
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type}.
end alt
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 3100, 3200
group Get Participant's FSP Details
ALS_API -> ALS_PARTICIPANT_HANDLER: Process Participant Callback Information for PUT
deactivate ALS_API
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Source Participant Callback End-point. \nError code: 200x
+ '********************* Request Parties Information - END ************************
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Source Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Source Participant Callback End-points
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Source Participant Callback End-points
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Source Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_GET_PUT`
- '********************* Request Parties Information - END ************************
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER -> ALS_API: Send Participant Information to PayerFSP.
activate ALS_API
group Get Participant's FSP Details
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x
- activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
- deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
- deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_GET_PUT_ERROR`
+
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
activate ALS_API
group Get Participant's FSP Details
deactivate ALS_API
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x
- activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
- deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
- deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ '********************* Get PayeeFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayeeFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayeeFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayeeFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayeeFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayeeFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTIES_GET_PUT_ERROR`
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT_ERROR`
+ '********************* Get PayerFSP Participant Information - END ************************
ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
activate ALS_API
end box
' START OF FLOW
group Post Participant's FSP Details
- PAYER_FSP --> ALS_API: Request to add participant's FSP details \POST - /participants. \nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+ PAYER_FSP --> ALS_API: Request to add participant's FSP details POST - /participants. \nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
activate ALS_API
ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
- ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details.
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process create participant's FSP details.
deactivate ALS_API
activate ALS_PARTICIPANT_HANDLER
- '********************* Validate Participant - START ************************
+ '********************* Sort into Participant buckets based on {TYPE} - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Group Participant lists into a Map based on {TYPE}.
+ hnote over ALS_PARTICIPANT_HANDLER #lightyellow
+ let ParticipantMap[{TYPE}] = List of Participants with {TYPE}
+ end note
+ '********************* Sort into Participant buckets based on {TYPE} - END ************************
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information. \nError code: 200x
- activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+ loop for keys in ParticipantMap -> TYPE
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{fspName}. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
- deactivate CENTRALSERVICE_API
+ '********************* Fetch Oracle Routing Information - START ************************
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {TYPE}. \nError code: 200x
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
- deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x *****TBU*****
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ oracleType
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
- '********************* Validate Participant - END ************************
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
- '********************* Fetch Oracle Routing Information - START ************************
+ '********************* Fetch Oracle Routing Information - END ************************
- ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 200x
- activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ loop for list in ParticipantMap{TYPE} -> PARTICIPANT
+ '********************* Validate Participant - START ************************
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information for {TYPE}. \nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x
- activate ALS_DB
- hnote over ALS_DB #lightyellow
- oracleEndpoint
- endpointType
- end note
- ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
- deactivate ALS_DB
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{PARTICIPANT.fspId}. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
- deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
- '********************* Fetch Oracle Routing Information - END ************************
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
- alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- alt {CURRENCY} not Provided OR no matching currency found in list of End-points
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
- end alt
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
- '********************* Create Participant Information - START ************************
+ '********************* Validate Participant - END ************************
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \POST - /participants. \nError code: 200x, 310x, 320x
- activate ALS_PARTICIPANT_ORACLE_DAO
- ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants. \nResponse code: 204 \nError code: 200x, 310x, 320x
- activate ORACLE_API
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {TYPE}
+ end alt
- ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
- activate ORACLE_STORE
- ORACLE_STORE -> ORACLE_API: Return participant's FSP details
- deactivate ORACLE_STORE
+ '********************* Create Participant Information - START ************************
- ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information.
- deactivate ORACLE_API
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Create participant's FSP details POST - /participants. \nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Create participant's FSP details POST - /participants. \nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
- ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
- deactivate ALS_PARTICIPANT_ORACLE_DAO
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
- activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
- deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
- deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return result of Participant Create request.
+ deactivate ORACLE_API
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_POST_PUT`
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return result of Participant Create request
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
- '********************* Create Participant Information - END ************************
+ '********************* Create Participant Information - END ************************
- ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
+ '********************* Get PayerFSP Participant Information - START ************************
- activate ALS_API
- ALS_API --> PAYER_FSP: Callback: PUT - /participants/{ID}
- deactivate ALS_API
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- else Empty list of End-Points returned or Error occurred
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match PayerFSP Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_POST_PUT`
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
- activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
- activate CENTRALSERVICE_API
- CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
- deactivate CENTRALSERVICE_API
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
- deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ '********************* Get PayerFSP Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
+
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{ID}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occurred
+
+ '********************* Get PayerFSP Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the PayerFSP Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the PayerFSP Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of PayerFSP Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of PayerFSP Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_POST_PUT_ERROR`
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_POST_PUT_ERROR`
+ '********************* Get PayerFSP Participant Information - END ************************
- ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
- activate ALS_API
- ALS_API --> PAYER_FSP: Callback: PUT - /participants/{ID}/error
- deactivate ALS_API
- end alt
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{ID}/error
+ deactivate ALS_API
+ end alt
- deactivate ALS_PARTICIPANT_HANDLER
+ deactivate ALS_PARTICIPANT_HANDLER
+ end loop
+ end loop
end
@enduml
end box
' START OF FLOW
group Get Participant's FSP Details
- PAYER_FSP --> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 300x, 310x, 320x
+ PAYER_FSP --> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}.\nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
activate ALS_API
ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
group Get Participant's FSP Details
deactivate ALS_API
activate ALS_PARTICIPANT_HANDLER
+ '********************* Fetch Oracle Routing Information - START ************************
ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 200x
activate ALS_TYPE_ENDPOINT_CONFIG_DAO
group Get Participant's FSP Details
ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+ '********************* Fetch Oracle Routing Information - END ************************
+
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
end alt
+ '********************* Request Participant Information from Oracle - START ************************
+
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 310x, 320x
activate ALS_PARTICIPANT_ORACLE_DAO
- ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 310x, 320x
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nResponse code: 200 \nError code: 200x, 310x, 320x
activate ORACLE_API
ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
deactivate CENTRALSERVICE_API
ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT`
+
+ '********************* Request Participant Information from Oracle - END ************************
ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
deactivate CENTRALSERVICE_API
ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT_ERROR`
ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
activate ALS_API
end box
' START OF FLOW
group Get Participant's FSP Details
- PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 200zx, 300x, 310x, 320x
+ PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{Type}/{ID}?currency={CURRENCY}. \nResponse code: 202 \nError code: 200zx, 300x, 310x, 320x
activate ALS_API
ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details.
group Get Participant's FSP Details
ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Destination Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Destination Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Destination Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT`
'********************* Request Oracle Participant Information - END ************************
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTIES_FSP_DAO: Request Parties information from FSP.\nError code: 200x
activate ALS_PARTIES_FSP_DAO
- ALS_PARTIES_FSP_DAO --> PAYEE_FSP: Parties Callback to Destination: GET - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 310x, 320x
+ ALS_PARTIES_FSP_DAO --> PAYEE_FSP: Parties Callback to Destination: GET - /parties/{Type}/{ID}?currency={CURRENCY}. \nResponse code: 202 \nError code: 200x, 310x, 320x
deactivate ALS_PARTIES_FSP_DAO
activate PAYEE_FSP
group Get Participant's FSP Details
ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_GET_PUT_ERROR`
ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
activate ALS_API
@startuml
' declate title
-title 7.2.1 Post Participants Details
+title 7.2.1 Post Participant Details
autonumber
' Actor Keys:
autonumber
' database - Database Persistance Store
' declare actors
-actor "PAYER_FSP" as PAYER_FSP
-boundary "Account Lookup Service" as ALS
-control "Parties Handler" as PARTIES_HANDLER
-entity "Account Lookup Service API" as ALS
-entity "Participant DAO" as PARTICIPANT_DAO
-database "Central Ledger Database" as DB
-actor "Payee_FSP" as PAYEE_FSP
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Participant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Oracle Registry Store" as ORACLE_STORE
+boundary "Central Service API" as CENTRALSERVICE_API
box "Account Lookup Service" #LightYellow
-participant ALS
-participant PARTIES_HANDLER
-participant PARTICIPANT_DAO
-participant DB
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
end box
-participant PAYEE_FSP
-
-' start flow
-
-activate PAYER_FSP
-group Put Party's Details
- PAYER_FSP -> ALS: Callback for the Get Party's request \nPUT - /parties/{Type}/{ID}
- note right of PAYER_FSP #yellow
- Message:
- party: {
- partyIdInfo: {
- “partyIdType”: “PERSONAL_ID”,
- “partyIdentifier”: “1551212”,
- “partySubIdOrType”: “License”,
- “fspId”: “1234”
- },
- merchantClassificationCode: 4321,
- “name”: “Justin Trudeau”,
- “personalInfo”: {
- “complexName”: {
- “firstName”: “Justin”,
- “middleName”: “Pierre”,
- “lastName”: “Trudeau”
- },
- “dateOfBirth”: “1971-12-25”
- }
- }
- end note
- activate ALS
- ALS -> PARTIES_HANDLER: Put Party by ID and Type \n(PartiesByTypeAndID2)
- activate PARTIES_HANDLER
- PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
- PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
- activate PARTICIPANT_DAO
- PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
- activate DB
- hnote over DB #lightyellow
- participantEndpoint
- end note
- DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
- deactivate DB
- PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
- deactivate PARTICIPANT_DAO
- PARTIES_HANDLER -> ALS: Return Success
- PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant
- deactivate PARTIES_HANDLER
- ALS -->PAYER_FSP: Return Success 200
- deactivate ALS
- deactivate PAYER_FSP
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Internal/External Oracle Data Store/Service" #LightGrey
+participant ORACLE_STORE
+end box
+
+' START OF FLOW
+
+group Post Participant's FSP Details
+ PAYER_FSP --> ALS_API: Request to add participant's FSP details \POST - /participants. \nResponse code: 202 \nError code: 200x, 300x, 310x, 320x
+ activate ALS_API
+ ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details.
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ '********************* Validate Participant - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information. \nError code: 200x
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{fspName}. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
+
+ '********************* Validate Participant - END ************************
+
+ '********************* Fetch Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 200x
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ '********************* Fetch Oracle Routing Information - END ************************
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
+ end alt
+
+ '********************* Create Participant Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \POST - /participants. \nError code: 200x, 310x, 320x
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants. \nResponse code: 204 \nError code: 200x, 310x, 320x
+ activate ORACLE_API
+
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information.
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_POST_PUT`
+
+ '********************* Create Participant Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
+
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{ID}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occurred
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nResponse code: 200 \nError code: 200x, 310x, 320x
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_POST_PUT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{ID}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
end
@enduml
This component (or back-end systems) will also be responsible for the persistenc
### 2.2 Sequence diagram
+#### 2.2.1 GET Participant
+
```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-participant-7.1.0.plantuml" }
```
+#### 2.2.2 POST Participant
+
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-post-participants-7.2.1.plantuml" }
+```
+
## 3. Party Lookup Design
### 3.1 Architecture overview
This component (or back-end systems) will also be responsible for the persistenc
### 3.2 Sequence diagram
+#### 3.2.1 GET Parties
+
```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-parties-7.2.0.plantuml" }
```
The routing configuration will be based on the following:
The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
-* [ALS Oracle Service v1 Interface Contract](../assets//InterfaceContracts/OracleServiceSwaggerv1.yaml)
+* [ALS Oracle Service v1 Interface Contract](../assets/InterfaceContracts/OracleServiceSwaggerv1.yaml)
## 2. Participant Lookup Design
### 2.1 Architecture overview
-
+
### 2.2 Sequence diagram
This component (or back-end systems) will also be responsible for the persistenc
### 3.2 Sequence diagram
-Work in progress..
-
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-parties-7.2.0.plantuml" }
+```
## 4. Database Design
group Get Participant's FSP Details
activate ALS_API
ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
ALS_API -> ALS_PARTICIPANT_HANDLER: Process Participant Callback Information for PUT
+ deactivate ALS_API
ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Source Participant Callback End-point. \nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
group Get Participant's FSP Details
'********************* Request Parties Information - END ************************
ALS_PARTICIPANT_HANDLER -> ALS_API: Send Participant Information to PayerFSP.
-
+ activate ALS_API
ALS_API --> PAYER_FSP: Callback with Parties Information: PUT - /parties/{Type}/{ID}?currency={CURRENCY}
deactivate ALS_API
end box
' START OF FLOW
group Get Participant's FSP Details
- PAYER_FSP --> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ PAYER_FSP --> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 300x, 310x, 320x
activate ALS_API
- ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details. \nError code: 3200
+ ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details.
deactivate ALS_API
activate ALS_PARTICIPANT_HANDLER
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification
- ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 200x
activate ALS_TYPE_ENDPOINT_CONFIG_DAO
- ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x
activate ALS_DB
hnote over ALS_DB #lightyellow
oracleEndpoint
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
end alt
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 310x, 320x
activate ALS_PARTICIPANT_ORACLE_DAO
- ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 310x, 320x
activate ORACLE_API
ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
group Get Participant's FSP Details
ORACLE_STORE -> ORACLE_API: Return participant's FSP details
deactivate ORACLE_STORE
- ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information. \nError code: 3200
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information.
deactivate ORACLE_API
- ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
deactivate ALS_PARTICIPANT_ORACLE_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
deactivate CENTRALSERVICE_API
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
- ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information. \nError code: 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information.
activate ALS_API
ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}?currency={CURRENCY}
deactivate ALS_API
- else Empty list of End-Points returned or Error occured
+ else Empty list of End-Points returned or Error occurred
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 310x, 320x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
deactivate CENTRALSERVICE_API
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
- ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
activate ALS_API
ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
deactivate ALS_API
end box
' START OF FLOW
group Get Participant's FSP Details
- PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 3100, 3200
+ PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 200zx, 300x, 310x, 320x
activate ALS_API
+ ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details.
deactivate ALS_API
activate ALS_PARTICIPANT_HANDLER
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification. \nError code: 3100, 3101
-
'********************* Validate Participant - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information. \nError code: 3100, 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information. \nError code: 200x
activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
- ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{fspName}. \nError code: 3200
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{fspName}. \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
deactivate CENTRALSERVICE_API
group Get Participant's FSP Details
deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 3201
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 320x
'********************* Validate Participant - END ************************
'********************* Retrieve Oracle Routing Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 200x, 3100, 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 200x
activate ALS_TYPE_ENDPOINT_CONFIG_DAO
group Get Participant's FSP Details
ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
deactivate ALS_PARTICIPANT_ORACLE_DAO
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Destination Participant Callback End-point. \nError code: 200x, 3100, 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Destination Participant Callback End-point. \nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Destination Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 3100, 3200
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Destination Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Destination Participant Callback End-points
deactivate CENTRALSERVICE_API
group Get Participant's FSP Details
'********************* Request Parties Information - START ************************
- ALS_PARTICIPANT_HANDLER -> ALS_PARTIES_FSP_DAO: Request Parties information from FSP.\nError code: 200x, 3100, 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTIES_FSP_DAO: Request Parties information from FSP.\nError code: 200x
activate ALS_PARTIES_FSP_DAO
- ALS_PARTIES_FSP_DAO --> PAYEE_FSP: Parties Callback to Destination: GET - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 3100, 3200
+ ALS_PARTIES_FSP_DAO --> PAYEE_FSP: Parties Callback to Destination: GET - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 310x, 320x
deactivate ALS_PARTIES_FSP_DAO
activate PAYEE_FSP
- PAYEE_FSP --> ALS_API: Callback with Participant Information: PUT - /parties/{Type}/{ID}?currency={CURRENCY}
+ PAYEE_FSP --> ALS_API: Callback with Participant Information: PUT - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 300x, 310x, 320x
deactivate PAYEE_FSP
activate ALS_API
+ ALS_API -> ALS_API: Validate request against Mojaloop Interface Specification. \nError code: 300x, 310x
ALS_API -> ALS_PARTICIPANT_HANDLER: Process Participant Callback Information for PUT
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Source Participant Callback End-point. \nError code: 200x, 3100, 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Source Participant Callback End-point. \nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Source Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 3100, 3200
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Source Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Source Participant Callback End-points
deactivate CENTRALSERVICE_API
group Get Participant's FSP Details
else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 3100, 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 3100, 3200
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
deactivate CENTRALSERVICE_API
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
- ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 3100, 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
activate ALS_API
ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
deactivate ALS_API
else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
- ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x
activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
- ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 310x, 320x
activate CENTRALSERVICE_API
CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
deactivate CENTRALSERVICE_API
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
- ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 3100, 3200
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 310x, 320x
activate ALS_API
ALS_API --> PAYEE_FSP: Callback: PUT - /participants/{Type}/{ID}/error
deactivate ALS_API
@startuml
' declate title
-title 7.2.0 Get Parties Details
+title 7.1.0 Get Psh arties Details
autonumber
' Actor Keys:
autonumber
' declare actors
actor "Payer FSP" as PAYER_FSP
-boundary "Account Lookup Service" as ALS
-control "Parties Handler" as PARTIES_HANDLER
-entity "Account Lookup Service API" as ALS
-entity "Participant DAO" as PARTICIPANT_DAO
-database "Central Ledger Database" as DB
-entity "Pathfinder Service" as PATHFINDER_SERVICE
-actor "GSMA Pathfinder" as PATHFINDER
-actor "Payee FSP" as PAYEE_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Participant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Parties FSP DAO" as ALS_PARTIES_FSP_DAO
+entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Oracle Registry Store" as ORACLE_STORE
+boundary "Central Service API" as CENTRALSERVICE_API
box "Account Lookup Service" #LightYellow
-participant ALS
-participant PARTIES_HANDLER
-participant PARTICIPANT_DAO
-participant DB
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+participant ALS_PARTIES_FSP_DAO
end box
-box "Pathfinder Library" #LightBlue
-participant PATHFINDER_SERVICE
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
end box
-participant PATHFINDER
-participant PAYEE_FSP
-
-' start flow
-
-activate PAYER_FSP
-group Get Party's Details
- PAYER_FSP -> ALS: Request to get party's details \nGET - /parties/{Type}/{ID}
- activate ALS
- ALS -> PARTIES_HANDLER: Get Party by ID and Type \n(PartiesByTypeAndID)
- activate PARTIES_HANDLER
- PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
- PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Source Party's details \n(handleMSISDNPartyRequest)\nError code: 3200
- activate PARTICIPANT_DAO
- PARTICIPANT_DAO -> DB: Fetch Source Party Error Endpoint \n(getParticipantEndpointByName)
- activate DB
- hnote over DB #lightyellow
- participantEndpoint
- end note
- DB --> PARTICIPANT_DAO: Return Party Error Endpoint
- deactivate DB
- PARTICIPANT_DAO --> PARTIES_HANDLER: Return Party Error Endpoint
- deactivate PARTICIPANT_DAO
- PARTIES_HANDLER -> PATHFINDER_SERVICE: Query Party ID
- activate PATHFINDER_SERVICE
- PATHFINDER_SERVICE -> PATHFINDER: Query Party
- activate PATHFINDER
- PATHFINDER -> PATHFINDER_SERVICE: Return Mobile Country Code \nand Network Code
- deactivate PATHFINDER
- PATHFINDER_SERVICE -> PARTIES_HANDLER: Return MCC & MNC
- deactivate PATHFINDER_SERVICE
- PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Participant Name\nError code: 3200
- activate PARTICIPANT_DAO
- PARTICIPANT_DAO -> DB: Fetch Participant Name \n(getParticipantNameFromMccMnc)
- activate DB
- hnote over DB #lightyellow
- participantMno
- end note
- DB --> PARTICIPANT_DAO: Return Participant Name
- deactivate DB
- PARTICIPANT_DAO --> PARTIES_HANDLER: Return Participant Name
- deactivate PARTICIPANT_DAO
- PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
- activate PARTICIPANT_DAO
- PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
- activate DB
- hnote over DB #lightyellow
- participantEndpoint
- end note
- DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
- deactivate DB
- PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
- deactivate PARTICIPANT_DAO
- PARTIES_HANDLER -> ALS: Return Success
- PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant with Updated Headers
- deactivate PARTIES_HANDLER
- ALS -->PAYER_FSP: Return Success 202
- deactivate ALS
- deactivate PAYER_FSP
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Internal/External Oracle Data Store/Service" #LightGrey
+participant ORACLE_STORE
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 3100, 3200
+ activate ALS_API
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details.
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification. \nError code: 3100, 3101
+
+ '********************* Validate Participant - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information. \nError code: 3100, 3200
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{fspName}. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 3201
+
+ '********************* Validate Participant - END ************************
+
+
+ '********************* Retrieve Oracle Routing Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 200x, 3100, 3200
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true. \nError code: 200x
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ '********************* Retrieve Oracle Routing Information - END ************************
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+
+ '********************* Request Oracle Participant Information - START ************************
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}.
+ end alt
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 3100, 3200
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 3100, 3200
+ activate ORACLE_API
+
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information.
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information.
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Destination Participant Callback End-point. \nError code: 200x, 3100, 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Destination Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 3100, 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Destination Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Destination Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Destination Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
+ '********************* Request Oracle Participant Information - END ************************
+
+ '********************* Request Parties Information - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTIES_FSP_DAO: Request Parties information from FSP.\nError code: 200x, 3100, 3200
+
+ activate ALS_PARTIES_FSP_DAO
+ ALS_PARTIES_FSP_DAO --> PAYEE_FSP: Parties Callback to Destination: GET - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 200x, 3100, 3200
+ deactivate ALS_PARTIES_FSP_DAO
+ activate PAYEE_FSP
+
+ PAYEE_FSP --> ALS_API: Callback with Participant Information: PUT - /parties/{Type}/{ID}?currency={CURRENCY}
+ deactivate PAYEE_FSP
+
+ activate ALS_API
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Process Participant Callback Information for PUT
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Source Participant Callback End-point. \nError code: 200x, 3100, 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Source Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 3100, 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Source Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Source Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Source Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
+ '********************* Request Parties Information - END ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Send Participant Information to PayerFSP.
+
+ ALS_API --> PAYER_FSP: Callback with Parties Information: PUT - /parties/{Type}/{ID}?currency={CURRENCY}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned for either (PayeeFSP or Oracle) config information or Error occurred for PayerFSP
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 200x, 3100, 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 200x, 3100, 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 3100, 3200
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ deactivate ALS_API
+ else Empty list of End-Points returned for PayerFSP config information or Error occurred for PayeeFSP
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 200x, 3100, 3200
+ activate ALS_API
+ ALS_API --> PAYEE_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
end
@enduml
## Mojaloop API
-Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
-* [Mojaloop API Specification](./mojaloop-api-specification.md)
+Documentation: [Mojaloop Specification]({{ book.importedVars.mojaloop.spec.uri.doc }})
+
+* [Mojaloop API {{ book.importedVars.mojaloop.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]({{ book.importedVars.mojaloop.spec.uri.api }})
## ALS Oracle API
Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
-* [ALS Oracle API Specification](./mojaloop-api-specification.md)
-
\ No newline at end of file
+* [ALS Oracle API {{ book.importedVars.als.oracle.spec.version }} Specification](./mojaloop-api-specification.md)
+* [Swagger]( {{ book.importedVars.als.oracle.spec.uri.api }} )
+
-
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
-
\ No newline at end of file
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
mojaloop:
uri:
doc: https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf
api: https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml
+als:
+ oracle:
+ spec:
+ version: v1.0
+ uri:
+ doc: ../mojaloop-technical-overview/account-lookup-service.md
+ api: https://github.com/mojaloop/documentation/blob/master/assets/InterfaceContracts/OracleServiceSwaggerv1.yaml
This provides environment resource recommendations with a view of the infrastruc
**Resources Requirements:**
-* Control Plane \(i.e. Master Node\)
+* Control Plane (i.e. Master Node) - [https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/%2F%5C%23size-of-master-and-master-components)
- \`\`\`http request
+ * 3x Master Nodes for future node scaling and HA (High Availability)
- [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+* ETCd Plane - [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- \`\`\`
+ * 3x ETCd nodes for HA (High Availability)
- * 3x Master Nodes for future node scaling and HA \(High Availability\)
+* Compute Plane (i.e. Worker Node):
-* ETCd Plane:
-
- \`\`\`http request
-
- [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
-
- \`\`\`
-
- * 3x ETCd nodes for HA \(High Availability\)
-
-* Compute Plane \(i.e. Worker Node\):
-
- TBC once load testing has been concluded. However the current general \*recommended size:
+ TBC once load testing has been concluded. However the current general *recommended size:
* 3x Worker nodes, each being:
* 4x vCPUs, 16GB of RAM, and 40gb storage
- \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+ *Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.

or
kubectx docker-for-desktop
```
-2. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+2. Install Kubernetes Dashboard roles, services & deployment. (Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard))
**IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
or
5. Open URI in default browser
- ```bash
+ ```http request
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
```
or
kubectl -n kube-system get po | grep tiller
```
-3. Add mojaloop repo to your Helm config \(optional\)
+3. Add mojaloop repo to your Helm config (optional)
```bash
helm repo add mojaloop http://mojaloop.io/helm/repo/
or
ml-api-adapter health test
- \`\`\`http request
-
- [http://ml-api-adapter/health](http://ml-api-adapter/health)
+ ```http request
+ http://ml-api-adapter/health
+ ```
- ```text
- ___
central-ledger health test
+
```http request
http://central-ledger/health
```
+
### 2.2 Helm
Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
This section will provide guidelines to delete, list, install and upgrade of the
**Note:** for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
-3. To **install** Mojaloop chart\(s\)
+3. To **install** Mojaloop chart(s)
**Ubuntu** - It might be required to execute `helm install` and `helm upgrade` under `sudo`.
This section will provide guidelines to delete, list, install and upgrade of the
helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
```
-4. To upgrade Mojaloop chart\(s\)
+4. To upgrade Mojaloop chart(s)
Note: 'v5.1.1' is an example value.
sudo ln -s /opt/Postman/Postman /usr/bin/postman
#### 2.3.1 Setup Postman
-* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
-* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* Select the _Mojaloop.postman_collection.json_ file you downloaded
+* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
-* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
-* In the imported collection, navigate to the _central\_ledger_ directory
+* Select the _MojaloopLocal.postman_environment.json_ file you downloaded
+* In the imported collection, navigate to the _central_ledger_ directory
### 2.4 Errors On Setup
-* \`central-ledger’s server IP address could not be found.
+* `central-ledger’s server IP address could not be found.
- ERR\_NAME\_NOT\_RESOLVED\`
+ `ERR_NAME_NOT_RESOLVED`
Resolved by:
- * Verify that a helm chart\(s\) was installed by executing
+ * Verify that a helm chart(s) was installed by executing
```bash
helm list
+# CircleCI v2 Config
+version: 2
+
+defaults_working_directory: &defaults_working_directory
+ working_directory: /home/circleci/project
+
+defaults_docker_node: &defaults_docker_node
+ docker:
+ - image: mhart/alpine-node:10.15.1
+
+defaults_docker_helm_kube: &defaults_docker_helm_kube
+ docker:
+ - image: hypnoglow/kubernetes-helm
+
+defaults_Dependencies: &defaults_Dependencies |
+ apk --no-cache add git
+ apk --no-cache add ca-certificates
+ apk --no-cache add curl
+ apk --no-cache add openssh-client
+ apk add --no-cache -t build-dependencies make gcc g++ python libtool autoconf automake
+ npm config set unsafe-perm true
+ npm install -g node-gyp
+
+defaults_awsCliDependencies: &defaults_awsCliDependencies |
+ apk --no-cache add \
+ python \
+ py-pip \
+ groff \
+ less \
+ mailcap
+ pip install --upgrade awscli==1.14.5 s3cmd==2.0.1 python-magic
+ apk -v --purge del py-pip
+
+defaults_Environment: &defaults_environment
+ name: Set default environment
+ command: |
+ echo "Nothing to do here right now...move along!"
+
+defaults_build_docker_login: &defaults_build_docker_login
+ name: Login to Docker Hub
+ command: |
+ docker login -u $DOCKER_USER -p $DOCKER_PASS
+
+defaults_build_docker_build: &defaults_build_docker_build
+ name: Build Docker $CIRCLE_TAG image
+ command: |
+ echo "Building Docker image: $CIRCLE_TAG"
+ docker build -t $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG .
+
+defaults_build_docker_build_release: &defaults_build_docker_build_release
+ name: Build Docker $RELEASE_TAG image
+ command: |
+ echo "Building Docker image: $RELEASE_TAG"
+ docker build -t $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG .
+
+defaults_build_docker_publish: &defaults_build_docker_publish
+ name: Publish Docker image $CIRCLE_TAG & Latest tag to Docker Hub
+ command: |
+ echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG"
+ docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG
+
+defaults_build_docker_publish_release: &defaults_build_docker_publish_release
+ name: Publish Docker image $RELEASE_TAG tag to Docker Hub
+ command: |
+ echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG"
+ docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG
+
+defaults_deploy_prequisites: &defaults_deploy_prequisites
+ name: Copy deployment pre-requisites from S3 bucket
+ command: |
+ if [ -z "$K8_USER_TOKEN" ];
+ then
+ echo "Copying K8 keys into $AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS folder"
+ mkdir $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS
+ aws s3 cp $AWS_S3_URI_DEVOPS_DEPLOYMENT_CONFIG/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/$K8_USER_PEM_KEY_FILENAME $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/
+ aws s3 cp $AWS_S3_URI_DEVOPS_DEPLOYMENT_CONFIG/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/$K8_USER_PEM_CERT_FILENAME $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/
+ else
+ echo "Skipping K8 keys into $AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS folder"
+ fi
+
+ echo "Copying Helm value file into $AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM folder for $K8_RELEASE_NAME release"
+ mkdir $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM
+ aws s3 cp $AWS_S3_URI_DEVOPS_DEPLOYMENT_CONFIG/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM/$HELM_VALUE_FILENAME $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM/
+
+defaults_deploy_config_kubernetes_cluster: &defaults_deploy_config_kubernetes_cluster
+ name: Configure Kubernetes cluster
+ command: |
+ echo "Configure Kubernetes cluster ${K8_CLUSTER_NAME}"
+ kubectl config set-cluster $K8_CLUSTER_NAME --server=$K8_CLUSTER_SERVER --insecure-skip-tls-verify=true
+
+defaults_deploy_config_kubernetes_credentials: &defaults_deploy_config_kubernetes_credentials
+ name: Configure Kubernetes credentails
+ command: |
+ echo "Configure Kubernetes credentials ${K8_USER_NAME}"
+ if [ ! -z "$K8_USER_TOKEN" ];
+ then
+ echo "Configure Kubernetes credentials ${K8_USER_NAME} using Token"
+ kubectl config set-credentials $K8_USER_NAME --token=$K8_USER_TOKEN
+ else
+ echo "Configure Kubernetes credentials ${K8_USER_NAME} using Certs"
+ kubectl config set-credentials $K8_USER_NAME --client-certificate=$CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/$K8_USER_PEM_CERT_FILENAME --client-key=$CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/$K8_USER_PEM_KEY_FILENAME
+ fi
+
+defaults_deploy_config_kubernetes_context: &defaults_deploy_config_kubernetes_context
+ name: Confi gure Kubernetes context
+ command: |
+ echo "Configure Kubernetes context ${K8_CLUSTER_NAME}"
+ kubectl config set-context $K8_CLUSTER_NAME --cluster=$K8_CLUSTER_NAME --user=$K8_USER_NAME --namespace=$K8_NAMESPACE
+
+defaults_deploy_set_kubernetes_context: &defaults_deploy_set_kubernetes_context
+ name: Set Kubernetes context
+ command: |
+ echo "Configure Kubernetes context ${K8_CLUSTER_NAME}"
+ kubectl config use-context $K8_CLUSTER_NAME
+
+defaults_deploy_configure_helm: &defaults_deploy_configure_helm
+ name: Configure Helm
+ command: |
+ helm init --client-only
+
+defaults_deploy_install_or_upgrade_helm_chart: &defaults_deploy_install_or_upgrade_helm_chart
+ name: Install or Upgrade Helm Chart
+ command: |
+ echo "Install or Upgrade Chart ${K8_RELEASE_NAME} for Docker Image ${DOCKER_ORG}/${CIRCLE_PROJECT_REPONAME}:${CIRCLE_TAG}"
+ if [ -z "$(helm list -q | grep -E "^${K8_RELEASE_NAME}$")" ] && [ "$(helm list -q | grep -E "^${K8_RELEASE_NAME}$")" != "Error: Unauthorized" ];
+ then
+ echo "Installing ${K8_RELEASE_NAME} new release"
+ helm install --namespace=$K8_NAMESPACE --name=$K8_RELEASE_NAME --repo=$K8_HELM_REPO --version $K8_HELM_CHART_VERSION $HELM_VALUE_SET_VALUES -f $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM/$HELM_VALUE_FILENAME $K8_HELM_CHART_NAME
+ else
+ echo "Upgrading ${K8_RELEASE_NAME} release"
+ helm upgrade $K8_RELEASE_NAME --repo=$K8_HELM_REPO --version $K8_HELM_CHART_VERSION --reuse-values $HELM_VALUE_SET_VALUES -f $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM/$HELM_VALUE_FILENAME $K8_HELM_CHART_NAME
+ fi
+
+defaults_slack_announcement: &defaults_slack_announcement
+ name: Slack announcement for tag releases
+ command: |
+ curl -X POST \
+ $SLACK_WEBHOOK_ANNOUNCEMENT \
+ -H 'Content-type: application/json' \
+ -H 'cache-control: no-cache' \
+ -d "{
+ \"text\": \"*${CIRCLE_PROJECT_REPONAME}* - Release \`${CIRCLE_TAG}\`: https://github.com/mojaloop/${CIRCLE_PROJECT_REPONAME}/releases/tag/${CIRCLE_TAG}\"
+ }"
+
+jobs:
+ setup:
+ <> $BASH_ENV
+ - run:
+ <> $BASH_ENV
+ - run:
+ <> $BASH_ENV
+ - run:
+ <> $BASH_ENV
+ echo 'export K8_CLUSTER_SERVER=$K8_CLUSTER_SERVER_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_RELEASE_NAME=$K8_RELEASE_NAME_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_NAMESPACE=$K8_NAMESPACE_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_USER_NAME=$K8_USER_NAME_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_USER_TOKEN=$K8_USER_TOKEN_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_HELM_CHART_NAME=$K8_HELM_CHART_NAME_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_HELM_CHART_VERSION=$K8_HELM_CHART_VERSION_SNAPSHOT' >> $BASH_ENV
+ echo 'export HELM_VALUE_SET_VALUES="--set central.centralhub.centralledger.containers.api.image.repository=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME --set central.centralhub.centralledger.containers.api.image.tag=$CIRCLE_TAG --set central.centralhub.centralledger.containers.admin.image.repository=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME --set central.centralhub.centralledger.containers.admin.image.tag=$CIRCLE_TAG"' >> $BASH_ENV
+ - run:
+ <> $BASH_ENV
+ echo 'export K8_CLUSTER_SERVER=$K8_CLUSTER_SERVER_PROD' >> $BASH_ENV
+ echo 'export K8_RELEASE_NAME=$K8_RELEASE_NAME_PROD' >> $BASH_ENV
+ echo 'export K8_NAMESPACE=$K8_NAMESPACE_PROD' >> $BASH_ENV
+ echo 'export K8_USER_NAME=$K8_USER_NAME_PROD' >> $BASH_ENV
+ echo 'export K8_USER_TOKEN=$K8_USER_TOKEN_PROD' >> $BASH_ENV
+ echo 'export K8_HELM_CHART_NAME=$K8_HELM_CHART_NAME_PROD' >> $BASH_ENV
+ echo 'export K8_HELM_CHART_VERSION=$K8_HELM_CHART_VERSION_PROD' >> $BASH_ENV
+ echo 'export HELM_VALUE_SET_VALUES="--set central.centralhub.centralledger.containers.api.image.repository=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME --set central.centralhub.centralledger.containers.api.image.tag=$CIRCLE_TAG --set central.centralhub.centralledger.containers.admin.image.repository=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME --set central.centralhub.centralledger.containers.admin.image.tag=$CIRCLE_TAG"' >> $BASH_ENV
+ - run:
+ <
+.git
+._book
+Dockerfile
+.DS_Store
+.gitignore
+.circleci
\ No newline at end of file
+# Gitbook information
+
+## To install gitbook cli
+
+`npm install -g gitbook-cli`
+
+## To install gitbook runtime
+
+`gitbook install`
+
+`npm run gitbook:install`
+
+## To serve gitbook documentation
+
+`gitbook serve --port 8989`
+
+`npm run gitbook:serve`
+
+## Generate PDF
+
+### Prerequisites
+
+1. Install Calibre: https://calibre-ebook.com/download
+
+2. npm install svgexport -g"
+
+3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
+
+4. npm install canvas
+
+5. Run `npm run gitbook:export:pdf`
+
+A file `book.pdf` will be generated in the root directory
+
+## Known Issues
+
+- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
+- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
+- Export PDF does not contain a
+
+
+## Docker
+
+### Build
+
+`docker build --no-cache -t mojaloop/documentation .`
+
+### Push
+
+`docker push mojaloop/documentation`
+
+### Run
+
+`docker run --rm -it --name mojadoc -p 8989:8989 mojaloop/documentation`
+# --------------- #
+# IntelliJ #
+# --------------- #
+.idea/
+**/*.iml
+
+# VSCode directory
+.vscode
+
+# Node
+node_modules
+
+# Gitbook
+# _book
+
+# Gitbook UML
+**/uml
+
+# MacOs
+.DS_Store
+FROM mhart/alpine-node:10.15.1
+
+WORKDIR /opt/gitbook
+COPY . /opt/gitbook
+
+RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
+
+WORKDIR /opt/gitbook/repo
+
+RUN npm ci
+
+RUN apk del build-dependencies
+
+EXPOSE 8989
+
+CMD npm run docs:serve
+
+
+
+
+
+
+ ALS Oracle · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ Base URL: /, Version: 1.0
+ Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
+
+
+
+ Default request content-types:
+ application/json
+
+
+ Default response content-types:
+ application/json
+
+
+
+ Schemes:
+
+
+
+ Summary
+
+
+
+ Path
+ Operation
+ Description
+
+
+
+
+
+ /participants
+
+
+ POST
+
+
+ Batch create participant information
+
+
+
+
+
+ /participants/{Type}/{ID}
+
+
+ DELETE
+
+
+ Delete participant information
+
+
+
+
+
+ GET
+
+
+ Look up participant information
+
+
+
+
+
+ POST
+
+
+ Create participant information
+
+
+
+
+
+ PUT
+
+
+ Return participant information
+
+
+
+
+
+
+
+
+ Paths
+
+
+
+
+
+ Batch create participant information
+ POST /participants
+ Tags:
+ participants
+
+
+
+ The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+
+
+
+
+
+ Uses default content-types:
+ application/json
+
+
+
+
+
+
+
+
+ ParticipantsPostRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ content-type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ fspiop-source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ content-length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer (int32)
+
+
+
+
+
+
+
+
+ x-forwarded-for
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-uri
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-http-method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 201 Created
+
+
+
+
+
+ Created
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 401 Unauthorized
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 403 Forbidden
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 404 Not Found
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 405 Method Not Allowed
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 406 Not Acceptable
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 501 Not Implemented
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 503 Service Unavailable
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+
+
+
+ Delete participant information
+ DELETE /participants/{Type}/{ID}
+ Tags:
+ participants
+
+
+
+ The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ Type
+ The type of lookup being requested, this can be MSISDN, bankAccount etc.
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+
+ ID
+ The ID related to the Type, if MSISDN then this is the mobile number being requested
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+
+ Currency
+ The Currency code applicable to the ID being requested
+
+ query
+
+ string
+
+
+
+
+
+
+
+
+ SubId
+ The SubId related to the ID, or the Type
+
+ query
+
+ string
+
+
+
+
+
+
+
+
+ content-type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ fspiop-source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ x-forwarded-for
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-uri
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-http-method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 204 No Content
+
+
+
+
+
+ No Content
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 401 Unauthorized
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 403 Forbidden
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 404 Not Found
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 405 Method Not Allowed
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 406 Not Acceptable
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 501 Not Implemented
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 503 Service Unavailable
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+
+ Look up participant information
+ GET /participants/{Type}/{ID}
+ Tags:
+ participants
+
+
+
+ The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ Type
+ The type of lookup being requested, this can be MSISDN, bankAccount etc.
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+
+ ID
+ The ID related to the Type, if MSISDN then this is the mobile number being requested
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+
+ Currency
+ The Currency code applicable to the ID being requested
+
+ query
+
+ string
+
+
+
+
+
+
+
+
+ SubId
+ The SubId related to the ID, or the Type
+
+ query
+
+ string
+
+
+
+
+
+
+
+
+ content-type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ fspiop-source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ x-forwarded-for
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-uri
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-http-method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDGetResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 401 Unauthorized
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 403 Forbidden
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 404 Not Found
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 405 Method Not Allowed
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 406 Not Acceptable
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 501 Not Implemented
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 503 Service Unavailable
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+
+ Create participant information
+ POST /participants/{Type}/{ID}
+ Tags:
+ participants
+
+
+
+ The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+
+
+
+
+
+ Uses default content-types:
+ application/json
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDPutRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ Type
+ The type of lookup being requested, this can be MSISDN, bankAccount etc.
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+
+ ID
+ The ID related to the Type, if MSISDN then this is the mobile number being requested
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+
+ content-type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ fspiop-source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ x-forwarded-for
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-uri
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-http-method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ content-length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer (int32)
+
+
+
+
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 201 Created
+
+
+
+
+
+ Created
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 401 Unauthorized
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 403 Forbidden
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 404 Not Found
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 405 Method Not Allowed
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 406 Not Acceptable
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 501 Not Implemented
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 503 Service Unavailable
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+
+ Return participant information
+ PUT /participants/{Type}/{ID}
+ Tags:
+ participants
+
+
+
+ The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+
+
+
+
+
+ Uses default content-types:
+ application/json
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDPutRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Type
+ The type of lookup being requested, this can be MSISDN, bankAccount etc.
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+
+ ID
+ The ID related to the Type, if MSISDN then this is the mobile number being requested
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+
+ content-type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ fspiop-source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+
+ accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ x-forwarded-for
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-uri
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ fspiop-http-method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ content-length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer (int32)
+
+
+
+
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 401 Unauthorized
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 403 Forbidden
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 404 Not Found
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 405 Method Not Allowed
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 406 Not Acceptable
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 501 Not Implemented
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+ 503 Service Unavailable
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+
+
+
+ Schema definitions
+
+
+
+
+ CurrencyEnum:
+
+ string , x ∈ {
+ AED
+ ,
+ AFN
+ ,
+ ALL
+ ,
+ AMD
+ ,
+ ANG
+ ,
+ AOA
+ ,
+ ARS
+ ,
+ AUD
+ ,
+ AWG
+ ,
+ AZN
+ ,
+ BAM
+ ,
+ BBD
+ ,
+ BDT
+ ,
+ BGN
+ ,
+ BHD
+ ,
+ BIF
+ ,
+ BMD
+ ,
+ BND
+ ,
+ BOB
+ ,
+ BRL
+ ,
+ BSD
+ ,
+ BTN
+ ,
+ BWP
+ ,
+ BYN
+ ,
+ BZD
+ ,
+ CAD
+ ,
+ CDF
+ ,
+ CHF
+ ,
+ CLP
+ ,
+ CNY
+ ,
+ COP
+ ,
+ CRC
+ ,
+ CUC
+ ,
+ CUP
+ ,
+ CVE
+ ,
+ CZK
+ ,
+ DJF
+ ,
+ DKK
+ ,
+ DOP
+ ,
+ DZD
+ ,
+ EGP
+ ,
+ ERN
+ ,
+ ETB
+ ,
+ EUR
+ ,
+ FJD
+ ,
+ FKP
+ ,
+ GBP
+ ,
+ GEL
+ ,
+ GGP
+ ,
+ GHS
+ ,
+ GIP
+ ,
+ GMD
+ ,
+ GNF
+ ,
+ GTQ
+ ,
+ GYD
+ ,
+ HKD
+ ,
+ HNL
+ ,
+ HRK
+ ,
+ HTG
+ ,
+ HUF
+ ,
+ IDR
+ ,
+ ILS
+ ,
+ IMP
+ ,
+ INR
+ ,
+ IQD
+ ,
+ IRR
+ ,
+ ISK
+ ,
+ JEP
+ ,
+ JMD
+ ,
+ JOD
+ ,
+ JPY
+ ,
+ KES
+ ,
+ KGS
+ ,
+ KHR
+ ,
+ KMF
+ ,
+ KPW
+ ,
+ KRW
+ ,
+ KWD
+ ,
+ KYD
+ ,
+ KZT
+ ,
+ LAK
+ ,
+ LBP
+ ,
+ LKR
+ ,
+ LRD
+ ,
+ LSL
+ ,
+ LYD
+ ,
+ MAD
+ ,
+ MDL
+ ,
+ MGA
+ ,
+ MKD
+ ,
+ MMK
+ ,
+ MNT
+ ,
+ MOP
+ ,
+ MRO
+ ,
+ MUR
+ ,
+ MVR
+ ,
+ MWK
+ ,
+ MXN
+ ,
+ MYR
+ ,
+ MZN
+ ,
+ NAD
+ ,
+ NGN
+ ,
+ NIO
+ ,
+ NOK
+ ,
+ NPR
+ ,
+ NZD
+ ,
+ OMR
+ ,
+ PAB
+ ,
+ PEN
+ ,
+ PGK
+ ,
+ PHP
+ ,
+ PKR
+ ,
+ PLN
+ ,
+ PYG
+ ,
+ QAR
+ ,
+ RON
+ ,
+ RSD
+ ,
+ RUB
+ ,
+ RWF
+ ,
+ SAR
+ ,
+ SBD
+ ,
+ SCR
+ ,
+ SDG
+ ,
+ SEK
+ ,
+ SGD
+ ,
+ SHP
+ ,
+ SLL
+ ,
+ SOS
+ ,
+ SPL
+ ,
+ SRD
+ ,
+ STD
+ ,
+ SVC
+ ,
+ SYP
+ ,
+ SZL
+ ,
+ THB
+ ,
+ TJS
+ ,
+ TMT
+ ,
+ TND
+ ,
+ TOP
+ ,
+ TRY
+ ,
+ TTD
+ ,
+ TVD
+ ,
+ TWD
+ ,
+ TZS
+ ,
+ UAH
+ ,
+ UGX
+ ,
+ USD
+ ,
+ UYU
+ ,
+ UZS
+ ,
+ VEF
+ ,
+ VND
+ ,
+ VUV
+ ,
+ WST
+ ,
+ XAF
+ ,
+ XCD
+ ,
+ XDR
+ ,
+ XOF
+ ,
+ XPF
+ ,
+ YER
+ ,
+ ZAR
+ ,
+ ZMW
+ ,
+ ZWD
+
+ }
+
+
+
+
+
+
+
+
+ The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+
+
+
+ "AED"
+
+
+
+
+
+
+
+
+ ErrorInformation:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type ErrorInformation.
+
+
+
+
+
+
+ errorCode:
+
+ string
+
+
+
+
+
+ Specific error number.
+
+
+
+
+
+
+ errorDescription:
+
+ string
+
+
+
+
+
+ Error description string.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationResponse:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+
+
+
+
+
+
+ errorInformation:
+
+ ErrorInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type Extension
+
+
+
+
+
+
+ key:
+
+ string
+
+
+
+
+
+ Extension key.
+
+
+
+
+
+
+ value:
+
+ string
+
+
+
+
+
+ Extension value.
+
+
+
+
+
+
+
+
+
+
+
+ ExtensionList:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type ExtensionList
+
+
+
+
+
+
+ extension:
+
+ object[]
+
+
+
+
+
+ Number of Extension elements
+
+
+
+
+
+ Extension
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsPostRequest:
+
+ object
+
+
+
+
+
+
+
+ POST /participants object
+
+
+
+
+
+
+ requestId:
+
+ string
+
+
+
+
+
+ The ID of the request, decided by the client. Used for identification of the callback from the server.
+
+
+
+
+
+
+ partyList:
+
+ object[]
+
+
+
+
+
+ List of PartyIdInfo elements that the client would like to update or create FSP information about.
+
+
+
+
+
+ PartyIdInfo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDGetResponse:
+
+ object
+
+
+
+
+
+
+
+ OK
+
+
+
+
+
+
+ partyList:
+
+ object[]
+
+
+
+
+ List of PartyTypeIdInfo elements that were either created or failed to be created.
+
+
+
+
+
+ PartyTypeIdInfo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDPutRequest:
+
+ object
+
+
+
+
+
+
+
+ PUT /participants/{Type}/{ID} object
+
+
+
+
+
+
+ fspId:
+
+ string
+
+
+
+
+
+ FSP Identifier that the Party belongs to.
+
+
+
+
+
+
+ currency:
+
+ string
+
+
+
+
+
+ Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+
+
+
+
+
+
+ partySubIdOrType:
+
+ string
+
+
+
+
+ A sub-identifier or sub-type for the Party.
+
+
+
+
+
+
+
+
+
+
+
+ PartyIdInfo:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type PartyIdInfo.
+
+
+
+
+
+
+ partyIdType:
+
+ string
+
+
+
+
+
+ Type of the identifier.
+
+
+
+
+
+
+ partyIdentifier:
+
+ string
+
+
+
+
+
+ An identifier for the Party.
+
+
+
+
+
+
+ partySubIdOrType:
+
+ string
+
+
+
+
+ A sub-identifier or sub-type for the Party.
+
+
+
+
+
+
+ fspId:
+
+ string
+
+
+
+
+ FSP ID
+
+
+
+
+
+
+ currency:
+
+ string
+
+
+
+
+ Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+
+
+
+
+
+
+
+
+
+
+
+ PartyIdTypeEnum:
+
+ string , x ∈ {
+ MSISDN
+ ,
+ EMAIL
+ ,
+ PERSONAL_ID
+ ,
+ BUSINESS
+ ,
+ DEVICE
+ ,
+ ACCOUNT_ID
+ ,
+ IBAN
+ ,
+ ALIAS
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+
+
+
+ "MSISDN"
+
+
+
+
+
+
+
+
+ PartyTypeIdInfo:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type PartyIdInfo.
+
+
+
+
+
+
+ fspId:
+
+ string
+
+
+
+
+
+ FSP ID
+
+
+
+
+
+
+ currency:
+
+ string
+
+
+
+
+
+ Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+
+
+
+
+
+
+ partySubIdOrType:
+
+ string
+
+
+
+
+ A sub-identifier or sub-type for the Party.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"ALS Oracle","level":"1.5.2","depth":2,"next":{"title":"Repo Details","level":"1.6","depth":1,"path":"repositories/README.md","ref":"repositories/README.md","articles":[{"title":"Helm","level":"1.6.1","depth":2,"path":"repositories/helm.md","ref":"repositories/helm.md","articles":[]},{"title":"Project","level":"1.6.2","depth":2,"path":"repositories/project.md","ref":"repositories/project.md","articles":[]}]},"previous":{"title":"Mojaloop","level":"1.5.1","depth":2,"path":"api/mojaloop-api-specification.md","ref":"api/mojaloop-api-specification.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"api/als-oracle-api-specification.md","mtime":"2019-03-08T16:40:38.975Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs Specifications
+Mojaloop API
+Documentation: Mojaloop v1.0 Specification
+
+Mojaloop API Specification
+
+ALS Oracle API
+Documentation: ALS Design
+
+ALS Oracle API Specification
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"APIs","level":"1.5","depth":1,"next":{"title":"Mojaloop","level":"1.5.1","depth":2,"path":"api/mojaloop-api-specification.md","ref":"api/mojaloop-api-specification.md","articles":[]},"previous":{"title":"Fraud Services","level":"1.4.5","depth":2,"path":"mojaloop-technical-overview/fraud-services.md","ref":"mojaloop-technical-overview/fraud-services.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"api/README.md","mtime":"2019-03-08T16:58:09.500Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Open API for FSP Interoperability (FSPIOP) (Implementation Friendly Version)
+ Base URL: /fsp, Version: 1.0
+ Based on API Definition.docx updated on 2018-03-13 Version 1.0. Note - The API supports a maximum size of 65536 bytes (64 Kilobytes) in the HTTP header.
+
+
+
+
+ Schemes:
+ http, https
+
+
+
+ Summary
+ Tag: participants
+
+
+
+
+
+ Operation
+ Description
+
+
+
+
+ PUT /participants/{ID}/error
+ ParticipantsByIDAndError
+
+
+
+ PUT /participants/{ID}
+ ParticipantsByID
+
+
+
+ PUT /participants/{Type}/{ID}/error
+ ParticipantsErrorByTypeAndID
+
+
+
+ PUT /participants/{Type}/{ID}/{SubId}/error
+ ParticipantsSubIdErrorByTypeAndID
+
+
+
+ GET /participants/{Type}/{ID}/{SubId}
+ ParticipantsSubIdByTypeAndID
+
+
+
+ PUT /participants/{Type}/{ID}/{SubId}
+ ParticipantsSubIdByTypeAndID
+
+
+
+ POST /participants/{Type}/{ID}/{SubId}
+ ParticipantsSubIdByTypeAndID
+
+
+
+ DELETE /participants/{Type}/{ID}/{SubId}
+ ParticipantsSubIdByTypeAndID
+
+
+
+ GET /participants/{Type}/{ID}
+ ParticipantsByTypeAndID
+
+
+
+ PUT /participants/{Type}/{ID}
+ ParticipantsByTypeAndID
+
+
+
+ POST /participants/{Type}/{ID}
+ ParticipantsByIDAndType
+
+
+
+ DELETE /participants/{Type}/{ID}
+ ParticipantsByTypeAndID
+
+
+
+ POST /participants
+ Participants
+
+
+
+
+ Tag: parties
+
+
+
+
+
+ Operation
+ Description
+
+
+
+
+ GET /parties/{Type}/{ID}
+ PartiesByTypeAndID
+
+
+
+ PUT /parties/{Type}/{ID}
+ PartiesByTypeAndID2
+
+
+
+ PUT /parties/{Type}/{ID}/error
+ PartiesErrorByTypeAndID
+
+
+
+ GET /parties/{Type}/{ID}/{SubId}
+ PartiesSubIdByTypeAndID
+
+
+
+ PUT /parties/{Type}/{ID}/{SubId}
+ PartiesSubIdByTypeAndID
+
+
+
+ PUT /parties/{Type}/{ID}/{SubId}/error
+ PartiesSubIdErrorByTypeAndID
+
+
+
+
+ Tag: transactionRequests
+
+
+
+
+
+ Operation
+ Description
+
+
+
+
+ PUT /transactionRequests/{ID}/error
+ TransactionRequestsErrorByID
+
+
+
+ GET /transactionRequests/{ID}
+ TransactionRequestsByID
+
+
+
+ PUT /transactionRequests/{ID}
+ TransactionRequestsByID
+
+
+
+ POST /transactionRequests
+ TransactionRequests
+
+
+
+
+ Tag: quotes
+
+
+
+
+
+ Operation
+ Description
+
+
+
+
+ PUT /quotes/{ID}/error
+ QuotesByIDAndError
+
+
+
+ GET /quotes/{ID}
+ QuotesByID
+
+
+
+ PUT /quotes/{ID}
+ QuotesByID
+
+
+
+ POST /quotes
+ Quotes
+
+
+
+
+ Tag: authorizations
+
+
+
+
+
+ Operation
+ Description
+
+
+
+
+ GET /authorizations/{ID}
+ AuthorizationsByID
+
+
+
+ PUT /authorizations/{ID}
+ AuthorizationsByID
+
+
+
+ PUT /authorizations/{ID}/error
+ AuthorizationsByIDAndError
+
+
+
+
+ Tag: transfers
+
+
+
+
+
+ Operation
+ Description
+
+
+
+
+ GET /transfers/{ID}
+ TransfersByIDGet
+
+
+
+ PUT /transfers/{ID}
+ TransfersByIDPut
+
+
+
+ PUT /transfers/{ID}/error
+ TransfersByIDAndError
+
+
+
+ POST /transfers
+ Transfers
+
+
+
+
+ Tag: transactions
+
+
+
+
+
+ Operation
+ Description
+
+
+
+
+ GET /transactions/{ID}
+ TransactionsByID
+
+
+
+ PUT /transactions/{ID}
+ TransactionsByID
+
+
+
+ PUT /transactions/{ID}/error
+ TransactionsErrorByID
+
+
+
+
+ Tag: bulkQuotes
+
+
+
+
+
+ Operation
+ Description
+
+
+
+
+ PUT /bulkQuotes/{ID}/error
+ BulkQuotesErrorByID
+
+
+
+ GET /bulkQuotes/{ID}
+ BulkQuotesByID
+
+
+
+ PUT /bulkQuotes/{ID}
+ BulkQuotesByID
+
+
+
+ POST /bulkQuotes
+ BulkQuotes
+
+
+
+
+ Tag: bulkTransfers
+
+
+
+
+
+ Operation
+ Description
+
+
+
+
+ GET /bulkTransfers/{ID}
+ BulkTransferByID
+
+
+
+ PUT /bulkTransfers/{ID}
+ BulkTransfersByIDPut
+
+
+
+ POST /bulkTransfers
+ BulkTransfers
+
+
+
+ PUT /bulkTransfers/{ID}/error
+ BulkTransfersErrorByID
+
+
+
+
+
+
+
+
+ Paths
+
+
+
+
+
+ AuthorizationsByID
+ GET /authorizations/{ID}
+ Tags:
+ authorizations
+
+
+
+ The HTTP request GET /authorizations/ is used to request the Payer to enter the applicable credentials in the Payee FSP system. The in the URI should contain the transactionRequestID, received from the POST /transactionRequests service earlier in the process. This request requires a query string to be included in the URI, with the following key-value pairs - authenticationType=, where value is a valid authentication type from the enumeration AuthenticationType. retriesLeft==, where is the number of retries left before the financial transaction is rejected. must be expressed in the form of the data type Integer. retriesLeft=1 means that this is the last retry before the financial transaction is rejected. amount=, where is the transaction amount that will be withdrawn from the Payer’s account. must be expressed in the form of the data type Amount. currency=, where is the transaction currency for the amount that will be withdrawn from the Payer’s account. The value must be expressed in the form of the enumeration CurrencyCode. An example URI containing all the required key-value pairs in the query string is the following - GET /authorization/3d492671-b7af-4f3f-88de-76169b1bdf88?authenticationType=OTP&retriesLeft=2&amount=102¤cy=USD
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AuthorizationsByID
+ PUT /authorizations/{ID}
+ Tags:
+ authorizations
+
+
+
+ The callback PUT /authorizations/ is used to inform the client of the result of a previously-requested authorization. The in the URI should contain the that was used in the GET /authorizations/.
+
+
+
+
+
+
+
+
+
+
+
+
+ AuthorizationsIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AuthorizationsByIDAndError
+ PUT /authorizations/{ID}/error
+ Tags:
+ authorizations
+
+
+
+ If the server is unable to find the transaction request, or another processing error occurs, the error callback PUT /authorizations//error is used. The in the URI should contain the that was used in the GET /authorizations/.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkQuotes
+ POST /bulkQuotes
+ Tags:
+ bulkQuotes
+
+
+
+ The HTTP request POST /bulkQuotes is used to request the creation of a bulk quote for the provided financial transactions in the server.
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkQuotesPostRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkQuotesByID
+ GET /bulkQuotes/{ID}
+ Tags:
+ bulkQuotes
+
+
+
+ The HTTP request GET /bulkQuotes/ is used to get information regarding an earlier created or requested bulk quote. The in the URI should contain the bulkQuoteId that was used for the creation of the bulk quote.
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkQuotesByID
+ PUT /bulkQuotes/{ID}
+ Tags:
+ bulkQuotes
+
+
+
+ The callback PUT /bulkQuotes/ is used to inform the client of a requested or created bulk quote. The in the URI should contain the bulkQuoteId that was used for the creation of the bulk quote, or the that was used in the GET /bulkQuotes/.
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkQuotesIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkQuotesErrorByID
+ PUT /bulkQuotes/{ID}/error
+ Tags:
+ bulkQuotes
+
+
+
+ If the server is unable to find or create a bulk quote, or another processing error occurs, the error callback PUT /bulkQuotes//error is used. The in the URI should contain the bulkQuoteId that was used for the creation of the bulk quote, or the that was used in the GET /bulkQuotes/.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkTransfers
+ POST /bulkTransfers
+ Tags:
+ bulkTransfers
+
+
+
+ The HTTP request POST /bulkTransfers is used to request the creation of a bulk transfer in the server.
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkTransfersPostRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkTransferByID
+ GET /bulkTransfers/{ID}
+ Tags:
+ bulkTransfers
+
+
+
+ The HTTP request GET /bulkTransfers/ is used to get information regarding an earlier created or requested bulk transfer. The in the URI should contain the bulkTransferId that was used for the creation of the bulk transfer.
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkTransfersByIDPut
+ PUT /bulkTransfers/{ID}
+ Tags:
+ bulkTransfers
+
+
+
+ The callback PUT /bulkTransfers/ is used to inform the client of a requested or created bulk transfer. The in the URI should contain the bulkTransferId that was used for the creation of the bulk transfer (POST /bulkTransfers), or the that was used in the GET /bulkTransfers/.
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkTransfersIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BulkTransfersErrorByID
+ PUT /bulkTransfers/{ID}/error
+ Tags:
+ bulkTransfers
+
+
+
+ If the server is unable to find or create a bulk transfer, or another processing error occurs, the error callback PUT /bulkTransfers//error is used. The in the URI should contain the bulkTransferId that was used for the creation of the bulk transfer (POST /bulkTransfers), or the that was used in the GET /bulkTransfers/.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Participants
+ POST /participants
+ Tags:
+ participants
+
+
+
+ The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsPostRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsByID
+ PUT /participants/{ID}
+ Tags:
+ participants
+
+
+
+ The callback PUT /participants/ is used to inform the client of the result of the creation of the provided list of identities.
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsByIDAndError
+ PUT /participants/{ID}/error
+ Tags:
+ participants
+
+
+
+ If there is an error during FSP information creation in the server, the error callback PUT /participants//error is used. The in the URI should contain the requestId that was used for the creation of the participant information.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsByTypeAndID
+ DELETE /participants/{Type}/{ID}
+ Tags:
+ participants
+
+
+
+ The HTTP request DELETE /participants// (or DELETE /participants///) is used to delete information in the server regarding the provided identity, defined by and ) (for example, DELETE /participants/MSISDN/123456789), and optionally . This HTTP request should support a query string to delete FSP information regarding a specific currency only. To delete a specific currency only, the HTTP request DELETE /participants//?currency=XYZ should be used, where XYZ is the requested currency. Note - The Account Lookup System should verify that it is the Party’s current FSP that is deleting the FSP information.
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsByTypeAndID
+ GET /participants/{Type}/{ID}
+ Tags:
+ participants
+
+
+
+ The HTTP request GET /participants// (or GET /participants///) is used to find out in which FSP the requested Party, defined by , and optionally , is located (for example, GET /participants/MSISDN/123456789, or GET /participants/BUSINESS/shoecompany/employee1). This HTTP request should support a query string for filtering of currency. To use filtering of currency, the HTTP request GET /participants//?currency=XYZ should be used, where XYZ is the requested currency.
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsByIDAndType
+ POST /participants/{Type}/{ID}
+ Tags:
+ participants
+
+
+
+ The HTTP request POST /participants// (or POST /participants///) is used to create information in the server regarding the provided identity, defined by , , and optionally (for example, POST /participants/MSISDN/123456789 or POST /participants/BUSINESS/shoecompany/employee1).
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDSubIDPostRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsByTypeAndID
+ PUT /participants/{Type}/{ID}
+ Tags:
+ participants
+
+
+
+ The callback PUT /participants// (or PUT /participants///) is used to inform the client of a successful result of the lookup, creation, or deletion of the FSP information related to the Party. If the FSP information is deleted, the fspId element should be empty; otherwise the element should include the FSP information for the Party.
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsErrorByTypeAndID
+ PUT /participants/{Type}/{ID}/error
+ Tags:
+ participants
+
+
+
+ If the server is unable to find, create or delete the associated FSP of the provided identity, or another processing error occurred, the error callback PUT /participants///error (or PUT /participants////error) is used.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsSubIdByTypeAndID
+ DELETE /participants/{Type}/{ID}/{SubId}
+ Tags:
+ participants
+
+
+
+ The HTTP request DELETE /participants// (or DELETE /participants///) is used to delete information in the server regarding the provided identity, defined by and ) (for example, DELETE /participants/MSISDN/123456789), and optionally . This HTTP request should support a query string to delete FSP information regarding a specific currency only. To delete a specific currency only, the HTTP request DELETE /participants//?currency=XYZ should be used, where XYZ is the requested currency. Note - The Account Lookup System should verify that it is the Party’s current FSP that is deleting the FSP information.
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ SubId
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/SubId
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsSubIdByTypeAndID
+ GET /participants/{Type}/{ID}/{SubId}
+ Tags:
+ participants
+
+
+
+ The HTTP request GET /participants// (or GET /participants///) is used to find out in which FSP the requested Party, defined by , and optionally , is located (for example, GET /participants/MSISDN/123456789, or GET /participants/BUSINESS/shoecompany/employee1). This HTTP request should support a query string for filtering of currency. To use filtering of currency, the HTTP request GET /participants//?currency=XYZ should be used, where XYZ is the requested currency.
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ SubId
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/SubId
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsSubIdByTypeAndID
+ POST /participants/{Type}/{ID}/{SubId}
+ Tags:
+ participants
+
+
+
+ The HTTP request POST /participants// (or POST /participants///) is used to create information in the server regarding the provided identity, defined by , , and optionally (for example, POST /participants/MSISDN/123456789 or POST /participants/BUSINESS/shoecompany/employee1).
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDSubIDPostRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ SubId
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/SubId
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsSubIdByTypeAndID
+ PUT /participants/{Type}/{ID}/{SubId}
+ Tags:
+ participants
+
+
+
+ The callback PUT /participants// (or PUT /participants///) is used to inform the client of a successful result of the lookup, creation, or deletion of the FSP information related to the Party. If the FSP information is deleted, the fspId element should be empty; otherwise the element should include the FSP information for the Party.
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ SubId
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/SubId
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsSubIdErrorByTypeAndID
+ PUT /participants/{Type}/{ID}/{SubId}/error
+ Tags:
+ participants
+
+
+
+ If the server is unable to find, create or delete the associated FSP of the provided identity, or another processing error occurred, the error callback PUT /participants///error (or PUT /participants////error) is used.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ SubId
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/SubId
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PartiesByTypeAndID
+ GET /parties/{Type}/{ID}
+ Tags:
+ parties
+
+
+
+ The HTTP request GET /parties// (or GET /parties///) is used to lookup information regarding the requested Party, defined by , and optionally (for example, GET /parties/MSISDN/123456789, or GET /parties/BUSINESS/shoecompany/employee1).
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PartiesByTypeAndID2
+ PUT /parties/{Type}/{ID}
+ Tags:
+ parties
+
+
+
+ The callback PUT /parties// (or PUT /parties///) is used to inform the client of a successful result of the Party information lookup.
+
+
+
+
+
+
+
+
+
+
+
+
+ PartiesTypeIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PartiesErrorByTypeAndID
+ PUT /parties/{Type}/{ID}/error
+ Tags:
+ parties
+
+
+
+ If the server is unable to find Party information of the provided identity, or another processing error occurred, the error callback PUT /parties///error (or PUT /parties////error) is used.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PartiesSubIdByTypeAndID
+ GET /parties/{Type}/{ID}/{SubId}
+ Tags:
+ parties
+
+
+
+ The HTTP request GET /parties// (or GET /parties///) is used to lookup information regarding the requested Party, defined by , and optionally (for example, GET /parties/MSISDN/123456789, or GET /parties/BUSINESS/shoecompany/employee1).
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ SubId
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/SubId
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PartiesSubIdByTypeAndID
+ PUT /parties/{Type}/{ID}/{SubId}
+ Tags:
+ parties
+
+
+
+ The callback PUT /parties// (or PUT /parties///) is used to inform the client of a successful result of the Party information lookup.
+
+
+
+
+
+
+
+
+
+
+
+
+ PartiesTypeIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ SubId
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/SubId
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PartiesSubIdErrorByTypeAndID
+ PUT /parties/{Type}/{ID}/{SubId}/error
+ Tags:
+ parties
+
+
+
+ If the server is unable to find Party information of the provided identity, or another processing error occurred, the error callback PUT /parties///error (or PUT /parties////error) is used.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/Type
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ SubId
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/SubId
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Quotes
+ POST /quotes
+ Tags:
+ quotes
+
+
+
+ The HTTP request POST /quotes is used to request the creation of a quote for the provided financial transaction in the server.
+
+
+
+
+
+
+
+
+
+
+
+
+ QuotesPostRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ QuotesByID
+ GET /quotes/{ID}
+ Tags:
+ quotes
+
+
+
+ The HTTP request GET /quotes/ is used to get information regarding an earlier created or requested quote. The in the URI should contain the quoteId that was used for the creation of the quote.
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ QuotesByID
+ PUT /quotes/{ID}
+ Tags:
+ quotes
+
+
+
+ The callback PUT /quotes/ is used to inform the client of a requested or created quote. The in the URI should contain the quoteId that was used for the creation of the quote, or the that was used in the GET /quotes/GET /quotes/.
+
+
+
+
+
+
+
+
+
+
+
+
+ QuotesIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ QuotesByIDAndError
+ PUT /quotes/{ID}/error
+ Tags:
+ quotes
+
+
+
+ If the server is unable to find or create a quote, or some other processing error occurs, the error callback PUT /quotes//error is used. The in the URI should contain the quoteId that was used for the creation of the quote, or the that was used in the GET /quotes/.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionRequests
+ POST /transactionRequests
+ Tags:
+ transactionRequests
+
+
+
+ The HTTP request POST /transactionRequests is used to request the creation of a transaction request for the provided financial transaction in the server.
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionRequestsPostRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionRequestsByID
+ GET /transactionRequests/{ID}
+ Tags:
+ transactionRequests
+
+
+
+ The HTTP request GET /transactionRequests/ is used to get information regarding an earlier created or requested transaction request. The in the URI should contain the transactionRequestId that was used for the creation of the transaction request.
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionRequestsByID
+ PUT /transactionRequests/{ID}
+ Tags:
+ transactionRequests
+
+
+
+ The callback PUT /transactionRequests/ is used to inform the client of a requested or created transaction request. The in the URI should contain the transactionRequestId that was used for the creation of the transaction request, or the that was used in the GET /transactionRequests/.
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionRequestsIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionRequestsErrorByID
+ PUT /transactionRequests/{ID}/error
+ Tags:
+ transactionRequests
+
+
+
+ If the server is unable to find or create a transaction request, or another processing error occurs, the error callback PUT /transactionRequests//error is used. The in the URI should contain the transactionRequestId that was used for the creation of the transaction request, or the that was used in the GET /transactionRequests/.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionsByID
+ GET /transactions/{ID}
+ Tags:
+ transactions
+
+
+
+ The HTTP request GET /transactions/ is used to get transaction information regarding a financial transaction created earlier. The in the URI should contain the transactionId that was used for the creation of the quote, as the transaction is created as part of another process (the transfer process).
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionsByID
+ PUT /transactions/{ID}
+ Tags:
+ transactions
+
+
+
+ The callback PUT /transactions/ is used to inform the client of a requested transaction. The in the URI should contain the that was used in the GET /transactions/.
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionsIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransactionsErrorByID
+ PUT /transactions/{ID}/error
+ Tags:
+ transactions
+
+
+
+ If the server is unable to find or create a transaction, or another processing error occurs, the error callback PUT /transactions//error is used. The in the URI should contain the that was used in the GET /transactions/.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Transfers
+ POST /transfers
+ Tags:
+ transfers
+
+
+
+ The HTTP request POST /transfers is used to request the creation of a transfer for the next ledger, and a financial transaction for the Payee FSP.
+
+
+
+
+
+
+
+
+
+
+
+
+ TransfersPostRequest
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransfersByIDGet
+ GET /transfers/{ID}
+ Tags:
+ transfers
+
+
+
+ The HTTP request GET /transfers/ is used to get information regarding an earlier created or requested transfer. The in the URI should contain the transferId that was used for the creation of the transfer.
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Accept
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 202 Accepted
+ #/responses/Response202
+
+
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransfersByIDPut
+ PUT /transfers/{ID}
+ Tags:
+ transfers
+
+
+
+ The callback PUT /transfers/ is used to inform the client of a requested or created transfer. The in the URI should contain the transferId that was used for the creation of the transfer, or the that was used in the GET /transfers/.
+
+
+
+
+
+
+
+
+
+
+
+
+ TransfersIDPutResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TransfersByIDAndError
+ PUT /transfers/{ID}/error
+ Tags:
+ transfers
+
+
+
+ If the server is unable to find or create a transfer, or another processing error occurs, the error callback PUT /transfers//error is used. The in the URI should contain the transferId that was used for the creation of the transfer, or the that was used in the GET /transfers/.
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+ #/parameters/ID
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+ #/parameters/Content-Length
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Content-Type
+
+
+
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/Date
+
+
+
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/X-Forwarded-For
+
+
+
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+ #/parameters/FSPIOP-Source
+
+
+
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Destination
+
+
+
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Encryption
+
+
+
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-Signature
+
+
+
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-URI
+
+
+
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+ #/parameters/FSPIOP-HTTP-Method
+
+
+
+
+
+
+
+ application/json
+
+
+
+
+ 200 OK
+ #/responses/Response200
+
+
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+
+ 400 Bad Request
+ #/responses/ErrorResponse400
+
+
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 401 Unauthorized
+ #/responses/ErrorResponse401
+
+
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 403 Forbidden
+ #/responses/ErrorResponse403
+
+
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 404 Not Found
+ #/responses/ErrorResponse404
+
+
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 405 Method Not Allowed
+ #/responses/ErrorResponse405
+
+
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 406 Not Acceptable
+ #/responses/ErrorResponse406
+
+
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 501 Not Implemented
+ #/responses/ErrorResponse501
+
+
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+ 503 Service Unavailable
+ #/responses/ErrorResponse503
+
+
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Parameter definitions
+
+
+
+ Key
+ Name
+ Description
+ Type
+ Data Type
+ Annotation
+
+
+
+
+ Accept
+
+ Accept
+ The Accept header field indicates the version of the API the client would like the server to use.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ Content-Length
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+
+ header
+
+ integer
+
+
+
+
+
+
+
+ Content-Type
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ Date
+
+ Date
+ The Date header field indicates the date when the request was sent.
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ X-Forwarded-For
+
+ X-Forwarded-For
+ The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+
+ header
+
+ string
+
+
+
+
+
+
+
+ FSPIOP-Source
+
+ FSPIOP-Source
+ The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+
+ header
+
+ string
+
+
+
+
+
+
+
+
+ FSPIOP-Destination
+
+ FSPIOP-Destination
+ The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+
+ header
+
+ string
+
+
+
+
+
+
+
+ FSPIOP-Encryption
+
+ FSPIOP-Encryption
+ The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+
+ header
+
+ string
+
+
+
+
+
+
+
+ FSPIOP-Signature
+
+ FSPIOP-Signature
+ The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+
+ header
+
+ string
+
+
+
+
+
+
+
+ FSPIOP-URI
+
+ FSPIOP-URI
+ The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+ FSPIOP-HTTP-Method
+
+ FSPIOP-HTTP-Method
+ The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+
+ header
+
+ string
+
+
+
+
+
+
+
+ ID
+
+ ID
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+ Type
+
+ Type
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+ SubId
+
+ SubId
+
+ path
+
+ string
+
+
+
+
+
+
+
+
+
+
+ Response definitions
+
+
+ Response200
+
+
+
+ OK
+
+
+
+
+
+
+
+
+
+ Response202
+
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+ ErrorResponse400
+
+
+
+ Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+ ErrorResponse401
+
+
+
+ Unauthorized - The request requires authentication in order to be processed.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+ ErrorResponse403
+
+
+
+ Forbidden - The request was denied and will be denied in the future.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+ ErrorResponse404
+
+
+
+ Not Found - The resource specified in the URI was not found.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+ ErrorResponse405
+
+
+
+ Method Not Allowed - An unsupported HTTP method for the request was used.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+ ErrorResponse406
+
+
+
+ Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+ ErrorResponse501
+
+
+
+ Not Implemented - The server does not support the requested service. The client should not retry.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+ ErrorResponse503
+
+
+
+ Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+
+
+
+
+
+
+
+
+ ErrorInformationResponse
+
+
+
+
+
+
+
+
+ Name
+ Description
+ Data Type
+
+
+
+
+
+ Content-Length
+ The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.
+
+
+
+ integer
+
+
+
+
+
+
+ Content-Type
+ The Content-Type header indicates the specific version of the API used to send the payload body.
+
+
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+ Schema definitions
+
+
+
+
+ Amount:
+
+ string
+
+
+ , must match ^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$
+
+
+
+
+
+ The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.
+
+
+
+
+
+
+
+ AmountType:
+
+ string , x ∈ {
+ SEND
+ ,
+ RECEIVE
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration AmountType - SEND Amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. - RECEIVE Amount the Payer would like the Payee to receive, that is, the amount that should be sent to the receiver exclusive fees.
+
+
+
+
+
+
+
+ AuthenticationInfo:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type AuthenticationInfo
+
+
+
+
+
+
+ authentication:
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+ authenticationValue:
+
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AuthenticationType:
+
+ string , x ∈ {
+ OTP
+ ,
+ QRCODE
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration AuthenticationType. - OTP One-time password generated by the Payer FSP. - QRCODE QR code used as One Time Password.
+
+
+
+
+
+
+
+ AuthenticationValue:
+
+ string
+
+
+ , must match ^\d{3,10}$|^\S{1,64}$
+
+
+
+
+
+ Contains the authentication value. The format depends on the authentication type used in the AuthenticationInfo complex type.
+
+
+
+
+
+
+
+ AuthorizationResponse:
+
+ string , x ∈ {
+ ENTERED
+ ,
+ REJECTED
+ ,
+ RESEND
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - ENTERED Consumer entered the authentication value. - REJECTED Consumer rejected the transaction. - RESEND Consumer requested to resend the authentication value.
+
+
+
+
+
+
+
+ AuthorizationsIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /authorizations/{ID} object
+
+
+
+
+
+
+ authenticationInfo:
+
+ string
+
+
+
+
+ OTP or QR Code if entered, otherwise empty.
+
+
+
+
+
+
+ responseType:
+
+ string
+
+
+
+
+
+ Enum containing response information; if the customer entered the authentication value, rejected the transaction, or requested a resend of the authentication value.
+
+
+
+
+
+
+
+
+
+
+
+ BalanceOfPayments:
+
+ string
+
+
+ , must match ^[1-9]\d{2}$
+
+
+
+
+
+ (BopCode) The API data type BopCode is a JSON String of 3 characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. https://www.imf.org/external/np/sta/bopcode/
+
+
+
+
+
+
+
+ BinaryString:
+
+ string
+
+
+ , must match ^[A-Za-z0-9-_]+[=]{0,2}$
+
+
+
+
+
+ The API data type BinaryString is a JSON String. The string is a base64url encoding of a string of raw bytes, where padding (character ‘=’) is added at the end of the data if needed to ensure that the string is a multiple of 4 characters. The length restriction indicates the allowed number of characters.
+
+
+
+
+
+
+
+ BinaryString32:
+
+ string
+
+
+ , must match ^[A-Za-z0-9-_]{43}$
+
+
+
+
+
+ The API data type BinaryString32 is a fixed size version of the API data type BinaryString, where the raw underlying data is always of 32 bytes. The data type BinaryString32 should not use a padding character as the size of the underlying data is fixed.
+
+
+
+
+
+
+
+ BulkQuotesIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /bulkQuotes/{ID} object
+
+
+
+
+
+
+ individualQuoteResults:
+
+ object[]
+
+
+
+
+ Fees for each individual transaction, if any of them are charged per transaction.
+
+
+
+
+
+ IndividualQuoteResult
+
+
+
+
+
+
+
+
+
+ expiration:
+
+ string
+
+
+
+
+
+ Date and time until when the quotation is valid and can be honored when used in the subsequent transaction request.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ BulkQuotesPostRequest:
+
+ object
+
+
+
+
+
+
+
+ POST /bulkQuotes object
+
+
+
+
+
+
+ bulkQuoteId:
+
+ string
+
+
+
+
+
+ Common ID between the FSPs for the bulk quote object, decided by the Payer FSP. The ID should be reused for resends of the same bulk quote. A new ID should be generated for each new bulk quote.
+
+
+
+
+
+
+ payer:
+
+ Party
+
+
+
+
+
+
+ Information about the Payer in the proposed financial transaction.
+
+
+
+
+
+
+ geoCode:
+
+ GeoCode
+
+
+
+
+
+ Longitude and Latitude of the initiating Party. Can be used to detect fraud.
+
+
+
+
+
+
+ expiration:
+
+ string
+
+
+
+
+ Expiration is optional to let the Payee FSP know when a quote no longer needs to be returned.
+
+
+
+
+
+
+ individualQuotes:
+
+ object[]
+
+
+
+
+
+ List of quotes elements.
+
+
+
+
+
+ IndividualQuote
+
+
+
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ BulkTransfersIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /bulkTransfers/{ID} object
+
+
+
+
+
+
+ completedTimestamp:
+
+ string
+
+
+
+
+ Time and date when the bulk transaction was completed.
+
+
+
+
+
+
+ individualTransferResults:
+
+ object[]
+
+
+
+
+ List of IndividualTransferResult elements.
+
+
+
+
+
+ IndividualTransferResult
+
+
+
+
+
+
+
+
+
+ bulkTransferState:
+
+ string
+
+
+
+
+
+ The state of the bulk transfer.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ BulkTransfersPostRequest:
+
+ object
+
+
+
+
+
+
+
+ POST /bulkTransfers object
+
+
+
+
+
+
+ bulkTransferId:
+
+ string
+
+
+
+
+
+ Common ID between the FSPs and the optional Switch for the bulk transfer object, decided by the Payer FSP. The ID should be reused for resends of the same bulk transfer. A new ID should be generated for each new bulk transfer.
+
+
+
+
+
+
+ bulkQuoteId:
+
+ string
+
+
+
+
+
+ ID of the related bulk quote.
+
+
+
+
+
+
+ payerFsp:
+
+ string
+
+
+
+
+
+ Payer FSP identifier.
+
+
+
+
+
+
+ payeeFsp:
+
+ string
+
+
+
+
+
+ Payee FSP identifier.
+
+
+
+
+
+
+ individualTransfers:
+
+ object[]
+
+
+
+
+
+ List of IndividualTransfer elements.
+
+
+
+
+
+ IndividualTransfer
+
+
+
+
+
+
+
+
+
+ expiration:
+
+ string
+
+
+
+
+
+ Expiration time of the transfers.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ BulkTransferState:
+
+ string , x ∈ {
+ RECEIVED
+ ,
+ PENDING
+ ,
+ ACCEPTED
+ ,
+ PROCESSING
+ ,
+ COMPLETED
+ ,
+ REJECTED
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - RECEIVED Payee FSP has received the bulk transfer from the Payer FSP. - PENDING Payee FSP has validated the bulk transfer. - ACCEPTED Payee FSP has accepted to process the bulk transfer. - PROCESSING Payee FSP has started to transfer fund to the Payees. - COMPLETED Payee FSP has completed transfer of funds to the Payees. - REJECTED Payee FSP has rejected to process the bulk transfer.
+
+
+
+
+
+
+
+ Code:
+
+ string
+
+
+ , must match ^[0-9a-zA-Z]{4,32}$
+
+
+
+
+
+ Any code/token returned by the Payee FSP (TokenCode Type).
+
+
+
+
+
+
+
+ CorrelationId:
+
+ string
+
+
+ , must match ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
+
+
+
+
+
+ Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to RFC 4122, that is restricted by a regular expression for interoperability reasons. An UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).
+
+
+
+
+
+
+
+ Currency:
+
+ string , x ∈ {
+ AED
+ ,
+ AFN
+ ,
+ ALL
+ ,
+ AMD
+ ,
+ ANG
+ ,
+ AOA
+ ,
+ ARS
+ ,
+ AUD
+ ,
+ AWG
+ ,
+ AZN
+ ,
+ BAM
+ ,
+ BBD
+ ,
+ BDT
+ ,
+ BGN
+ ,
+ BHD
+ ,
+ BIF
+ ,
+ BMD
+ ,
+ BND
+ ,
+ BOB
+ ,
+ BRL
+ ,
+ BSD
+ ,
+ BTN
+ ,
+ BWP
+ ,
+ BYN
+ ,
+ BZD
+ ,
+ CAD
+ ,
+ CDF
+ ,
+ CHF
+ ,
+ CLP
+ ,
+ CNY
+ ,
+ COP
+ ,
+ CRC
+ ,
+ CUC
+ ,
+ CUP
+ ,
+ CVE
+ ,
+ CZK
+ ,
+ DJF
+ ,
+ DKK
+ ,
+ DOP
+ ,
+ DZD
+ ,
+ EGP
+ ,
+ ERN
+ ,
+ ETB
+ ,
+ EUR
+ ,
+ FJD
+ ,
+ FKP
+ ,
+ GBP
+ ,
+ GEL
+ ,
+ GGP
+ ,
+ GHS
+ ,
+ GIP
+ ,
+ GMD
+ ,
+ GNF
+ ,
+ GTQ
+ ,
+ GYD
+ ,
+ HKD
+ ,
+ HNL
+ ,
+ HRK
+ ,
+ HTG
+ ,
+ HUF
+ ,
+ IDR
+ ,
+ ILS
+ ,
+ IMP
+ ,
+ INR
+ ,
+ IQD
+ ,
+ IRR
+ ,
+ ISK
+ ,
+ JEP
+ ,
+ JMD
+ ,
+ JOD
+ ,
+ JPY
+ ,
+ KES
+ ,
+ KGS
+ ,
+ KHR
+ ,
+ KMF
+ ,
+ KPW
+ ,
+ KRW
+ ,
+ KWD
+ ,
+ KYD
+ ,
+ KZT
+ ,
+ LAK
+ ,
+ LBP
+ ,
+ LKR
+ ,
+ LRD
+ ,
+ LSL
+ ,
+ LYD
+ ,
+ MAD
+ ,
+ MDL
+ ,
+ MGA
+ ,
+ MKD
+ ,
+ MMK
+ ,
+ MNT
+ ,
+ MOP
+ ,
+ MRO
+ ,
+ MUR
+ ,
+ MVR
+ ,
+ MWK
+ ,
+ MXN
+ ,
+ MYR
+ ,
+ MZN
+ ,
+ NAD
+ ,
+ NGN
+ ,
+ NIO
+ ,
+ NOK
+ ,
+ NPR
+ ,
+ NZD
+ ,
+ OMR
+ ,
+ PAB
+ ,
+ PEN
+ ,
+ PGK
+ ,
+ PHP
+ ,
+ PKR
+ ,
+ PLN
+ ,
+ PYG
+ ,
+ QAR
+ ,
+ RON
+ ,
+ RSD
+ ,
+ RUB
+ ,
+ RWF
+ ,
+ SAR
+ ,
+ SBD
+ ,
+ SCR
+ ,
+ SDG
+ ,
+ SEK
+ ,
+ SGD
+ ,
+ SHP
+ ,
+ SLL
+ ,
+ SOS
+ ,
+ SPL
+ ,
+ SRD
+ ,
+ STD
+ ,
+ SVC
+ ,
+ SYP
+ ,
+ SZL
+ ,
+ THB
+ ,
+ TJS
+ ,
+ TMT
+ ,
+ TND
+ ,
+ TOP
+ ,
+ TRY
+ ,
+ TTD
+ ,
+ TVD
+ ,
+ TWD
+ ,
+ TZS
+ ,
+ UAH
+ ,
+ UGX
+ ,
+ USD
+ ,
+ UYU
+ ,
+ UZS
+ ,
+ VEF
+ ,
+ VND
+ ,
+ VUV
+ ,
+ WST
+ ,
+ XAF
+ ,
+ XCD
+ ,
+ XDR
+ ,
+ XOF
+ ,
+ XPF
+ ,
+ YER
+ ,
+ ZAR
+ ,
+ ZMW
+ ,
+ ZWD
+
+ }
+
+
+
+
+ (3 to 3 chars)
+
+
+
+
+
+
+ The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+
+
+
+
+
+
+
+ Date:
+
+ string
+
+
+ , must match ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$
+
+
+
+
+
+ The API data type Date is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. This format, as specified in ISO 8601, contains a date only. A more readable version of the format is yyyy-MM-dd. Examples - "1982-05-23", "1987-08-05”
+
+
+
+
+
+
+
+ DateOfBirth:
+
+ string
+
+
+ , must match ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$
+
+
+
+
+
+ Date of Birth of the Party.
+
+
+
+
+
+
+
+ DateTime:
+
+ string
+
+
+ , must match ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$
+
+
+
+
+
+ The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. The format is according to ISO 8601, expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples - "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z indicates Zulu time zone, same as UTC).
+
+
+
+
+
+
+
+ ErrorCode:
+
+ string
+
+
+ , must match ^[1-9]\d{3}$
+
+
+
+
+
+ The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represents the specific error.
+
+
+
+
+
+
+
+ ErrorDescription:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+
+
+
+
+
+ Error description string.
+
+
+
+
+
+
+
+ ErrorInformation:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type ErrorInformation.
+
+
+
+
+
+
+ errorCode:
+
+ string
+
+
+
+
+
+ Specific error number.
+
+
+
+
+
+
+ errorDescription:
+
+ string
+
+
+
+
+
+ Error description string.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional list of extensions, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationObject:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type object that contains ErrorInformation.
+
+
+
+
+
+
+ errorInformation:
+
+ ErrorInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ErrorInformationResponse:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+
+
+
+
+
+
+ errorInformation:
+
+ ErrorInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type Extension
+
+
+
+
+
+
+ key:
+
+ string
+
+
+
+
+
+ Extension key.
+
+
+
+
+
+
+ value:
+
+ string
+
+
+
+
+
+ Extension value.
+
+
+
+
+
+
+
+
+
+
+
+ ExtensionKey:
+
+ string
+
+
+
+ (1 to 32 chars)
+
+
+
+
+
+
+ Extension key.
+
+
+
+
+
+
+
+ ExtensionList:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type ExtensionList
+
+
+
+
+
+
+ extension:
+
+ object[]
+
+
+
+
+
+ Number of Extension elements
+
+
+
+
+
+ Extension
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ExtensionValue:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+
+
+
+
+
+ Extension value.
+
+
+
+
+
+
+
+ FirstName:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+ , must match ^(?!\s*$)[\w .,'-]{1,128}$
+
+
+
+
+
+ First name of the Party (Name Type).
+
+
+
+
+
+
+
+ FspId:
+
+ string
+
+
+
+ (1 to 32 chars)
+
+
+
+
+
+
+ FSP identifier.
+
+
+
+
+
+
+
+ GeoCode:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type GeoCode. Indicates the geographic location from where the transaction was initiated.
+
+
+
+
+
+
+ latitude:
+
+ string
+
+
+
+
+
+ Latitude of the Party.
+
+
+
+
+
+
+ longitude:
+
+ string
+
+
+
+
+
+ Longitude of the Party.
+
+
+
+
+
+
+
+
+
+
+
+ IlpCondition:
+
+ string
+
+
+
+ (up to 48 chars)
+
+ , must match ^[A-Za-z0-9-_]{43}$
+
+
+
+
+
+ Condition that must be attached to the transfer by the Payer.
+
+
+
+
+
+
+
+ IlpFulfilment:
+
+ string
+
+
+
+ (up to 48 chars)
+
+ , must match ^[A-Za-z0-9-_]{43}$
+
+
+
+
+
+ Fulfilment that must be attached to the transfer by the Payee.
+
+
+
+
+
+
+
+ IlpPacket:
+
+ string
+
+
+
+ (1 to 32768 chars)
+
+ , must match ^[A-Za-z0-9-_]+[=]{0,2}$
+
+
+
+
+
+ Information for recipient (transport layer information).
+
+
+
+
+
+
+
+ IndividualQuote:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type IndividualQuote.
+
+
+
+
+
+
+ quoteId:
+
+ string
+
+
+
+
+
+ Identifies quote message.
+
+
+
+
+
+
+ transactionId:
+
+ string
+
+
+
+
+
+ Identifies transaction message.
+
+
+
+
+
+
+ payee:
+
+ Party
+
+
+
+
+
+
+ Information about the Payee in the proposed financial transaction.
+
+
+
+
+
+
+ amountType:
+
+ string
+
+
+
+
+
+ SEND for sendAmount, RECEIVE for receiveAmount.
+
+
+
+
+
+
+ amount:
+
+ Money
+
+
+
+
+
+
+ Depending on amountType - If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive any fees. The amount is not updated by any of the participating entities.
+
+
+
+
+
+
+ fees:
+
+ Money
+
+
+
+
+
+ The fees in the transaction. The fees element should be empty if fees should be non-disclosed. The fees element should be non-empty if fees should be disclosed.
+
+
+
+
+
+
+ transactionType:
+
+ TransactionType
+
+
+
+
+
+
+ Type of transaction that the quote is requested for.
+
+
+
+
+
+
+ note:
+
+ string
+
+
+
+
+ Memo that will be attached to the transaction.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ IndividualQuoteResult:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type IndividualQuoteResult.
+
+
+
+
+
+
+ quoteId:
+
+ string
+
+
+
+
+
+ Identifies quote message.
+
+
+
+
+
+
+ payee:
+
+ Party
+
+
+
+
+
+ Information about the Payee in the proposed financial transaction.
+
+
+
+
+
+
+ transferAmount:
+
+ Money
+
+
+
+
+
+ Amount that the Payee FSP should receive.
+
+
+
+
+
+
+ payeeReceiveAmount:
+
+ Money
+
+
+
+
+
+ Amount that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees.
+
+
+
+
+
+
+ payeeFspFee:
+
+ Money
+
+
+
+
+
+ Payee FSP’s part of the transaction fee.
+
+
+
+
+
+
+ payeeFspCommission:
+
+ Money
+
+
+
+
+
+ Transaction commission from the Payee FSP
+
+
+
+
+
+
+ ilpPacket:
+
+ string
+
+
+
+
+ The ILP Packet that must be attached to the transfer by the Payer.
+
+
+
+
+
+
+ condition:
+
+ string
+
+
+
+
+ The condition that must be attached to the transfer by the Payer.
+
+
+
+
+
+
+ errorInformation:
+
+ ErrorInformation
+
+
+
+
+
+ Error code, category description. Note - receiveAmount, payeeFspFee, payeeFspCommission, expiration, ilpPacket, condition should not be set if errorInformation is set.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ IndividualTransfer:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type IndividualTransfer.
+
+
+
+
+
+
+ transferId:
+
+ string
+
+
+
+
+
+ Identifies messages related to the same /transfers sequence.
+
+
+
+
+
+
+ transferAmount:
+
+ Money
+
+
+
+
+
+
+ Transaction amount to be sent.
+
+
+
+
+
+
+ ilpPacket:
+
+ string
+
+
+
+
+
+ ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data.
+
+
+
+
+
+
+ condition:
+
+ string
+
+
+
+
+
+ Condition that must be fulfilled to commit the transfer.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ IndividualTransferResult:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type IndividualTransferResult.
+
+
+
+
+
+
+ transferId:
+
+ string
+
+
+
+
+
+ Identifies messages related to the same /transfers sequence.
+
+
+
+
+
+
+ fulfilment:
+
+ string
+
+
+
+
+ Fulfilment of the condition specified with the transaction. Note - Either fulfilment or errorInformation should be set, not both.
+
+
+
+
+
+
+ errorInformation:
+
+ ErrorInformation
+
+
+
+
+
+ If transfer is REJECTED, error information may be provided. Note - Either fulfilment or errorInformation should be set, not both.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ Integer:
+
+ string
+
+
+ , must match ^[1-9]\d*$
+
+
+
+
+
+ The API data type Integer is a JSON String consisting of digits only. Negative numbers and leading zeroes are not allowed. The data type is always limited to a specific number of digits.
+
+
+
+
+
+
+
+ LastName:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+ , must match ^(?!\s*$)[\w .,'-]{1,128}$
+
+
+
+
+
+ Last name of the Party (Name Type).
+
+
+
+
+
+
+
+ Latitude:
+
+ string
+
+
+ , must match ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$
+
+
+
+
+
+ The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.
+
+
+
+
+
+
+
+ Longitude:
+
+ string
+
+
+ , must match ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$
+
+
+
+
+
+ The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.
+
+
+
+
+
+
+
+ MerchantClassificationCode:
+
+ string
+
+
+ , must match ^[\d]{1,4}$
+
+
+
+
+
+ A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc.
+
+
+
+
+
+
+
+ MiddleName:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+ , must match ^(?!\s*$)[\w .,'-]{1,128}$
+
+
+
+
+
+ Middle name of the Party (Name Type).
+
+
+
+
+
+
+
+ Money:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type Money.
+
+
+
+
+
+
+ currency:
+
+ string
+
+
+
+
+
+ Currency of the amount.
+
+
+
+
+
+
+ amount:
+
+ string
+
+
+
+
+
+ Amount of Money.
+
+
+
+
+
+
+
+
+
+
+
+ Name:
+
+ string
+
+
+ , must match ^(?!\s*$)[\w .,'-]{1,128}$
+
+
+
+
+
+ The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name. Regular Expression - The regular expression for restricting the Name type is "^(?!\s*$)[\w .,'-]{1,128}
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
quot;. The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ). Note - In some programming languages, Unicode support must be specifically enabled. For example, if Java is used the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters.
+
+
+
+
+
+
+
+ Note:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+
+
+
+
+
+ Memo assigned to transaction
+
+
+
+
+
+
+
+ OtpValue:
+
+ string
+
+
+ , must match ^\d{3,10}$
+
+
+
+
+
+ The API data type OtpValue is a JSON String of 3 to 10 characters, consisting of digits only. Negative numbers are not allowed. One or more leading zeros are allowed.
+
+
+
+
+
+
+
+ ParticipantsIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /participants/{ID} object
+
+
+
+
+
+
+ partyList:
+
+ object[]
+
+
+
+
+
+ List of PartyResult elements that were either created or failed to be created.
+
+
+
+
+
+ PartyResult
+
+
+
+
+
+
+
+
+
+ currency:
+
+ string
+
+
+
+
+ Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsPostRequest:
+
+ object
+
+
+
+
+
+
+
+ POST /participants object
+
+
+
+
+
+
+ requestId:
+
+ string
+
+
+
+
+
+ The ID of the request, decided by the client. Used for identification of the callback from the server.
+
+
+
+
+
+
+ partyList:
+
+ object[]
+
+
+
+
+
+ List of PartyIdInfo elements that the client would like to update or create FSP information about.
+
+
+
+
+
+ PartyIdInfo
+
+
+
+
+
+
+
+
+
+ currency:
+
+ string
+
+
+
+
+ Indicate that the provided Currency is supported by each PartyIdInfo in the list.
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /participants/{Type}/{ID}/{SubId}, /participants/{Type}/{ID} object
+
+
+
+
+
+
+ fspId:
+
+ string
+
+
+
+
+ FSP Identifier that the Party belongs to.
+
+
+
+
+
+
+
+
+
+
+
+ ParticipantsTypeIDSubIDPostRequest:
+
+ object
+
+
+
+
+
+
+
+ POST /participants/{Type}/{ID}/{SubId}, /participants/{Type}/{ID} object
+
+
+
+
+
+
+ fspId:
+
+ string
+
+
+
+
+
+ FSP Identifier that the Party belongs to.
+
+
+
+
+
+
+ currency:
+
+ string
+
+
+
+
+ Indicate that the provided Currency is supported by the Party.
+
+
+
+
+
+
+
+
+
+
+
+ PartiesTypeIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /parties/{Type}/{ID} object
+
+
+
+
+
+
+ party:
+
+ Party
+
+
+
+
+
+
+ Information regarding the requested Party.
+
+
+
+
+
+
+
+
+
+
+
+ Party:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type Party.
+
+
+
+
+
+
+ partyIdInfo:
+
+ PartyIdInfo
+
+
+
+
+
+
+ Party Id type, id, sub ID or type, and FSP Id.
+
+
+
+
+
+
+ merchantClassificationCode:
+
+ string
+
+
+
+
+ Used in the context of Payee Information, where the Payee happens to be a merchant accepting merchant payments.
+
+
+
+
+
+
+ name:
+
+ string
+
+
+
+
+ Display name of the Party, could be a real name or a nick name.
+
+
+
+
+
+
+ personalInfo:
+
+ PartyPersonalInfo
+
+
+
+
+
+ Personal information used to verify identity of Party such as first, middle, last name and date of birth.
+
+
+
+
+
+
+
+
+
+
+
+ PartyComplexName:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type PartyComplexName.
+
+
+
+
+
+
+ firstName:
+
+ string
+
+
+
+
+ Party’s first name.
+
+
+
+
+
+
+ middleName:
+
+ string
+
+
+
+
+ Party’s middle name.
+
+
+
+
+
+
+ lastName:
+
+ string
+
+
+
+
+ Party’s last name.
+
+
+
+
+
+
+
+
+
+
+
+ PartyIdentifier:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+
+
+
+
+
+ Identifier of the Party.
+
+
+
+
+
+
+
+ PartyIdInfo:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type PartyIdInfo.
+
+
+
+
+
+
+ partyIdType:
+
+ string
+
+
+
+
+
+ Type of the identifier.
+
+
+
+
+
+
+ partyIdentifier:
+
+ string
+
+
+
+
+
+ An identifier for the Party.
+
+
+
+
+
+
+ partySubIdOrType:
+
+ string
+
+
+
+
+ A sub-identifier or sub-type for the Party.
+
+
+
+
+
+
+ fspId:
+
+ string
+
+
+
+
+ FSP ID (if known)
+
+
+
+
+
+
+
+
+
+
+
+ PartyIdType:
+
+ string , x ∈ {
+ MSISDN
+ ,
+ EMAIL
+ ,
+ PERSONAL_ID
+ ,
+ BUSINESS
+ ,
+ DEVICE
+ ,
+ ACCOUNT_ID
+ ,
+ IBAN
+ ,
+ ALIAS
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+
+
+
+
+
+
+
+ PartyName:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+
+
+
+
+
+ Name of the Party. Could be a real name or a nickname.
+
+
+
+
+
+
+
+ PartyPersonalInfo:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type PartyPersonalInfo.
+
+
+
+
+
+
+ complexName:
+
+ PartyComplexName
+
+
+
+
+
+ First, middle and last name for the Party.
+
+
+
+
+
+
+ dateOfBirth:
+
+ string
+
+
+
+
+ Date of birth for the Party.
+
+
+
+
+
+
+
+
+
+
+
+ PartyResult:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type PartyResult.
+
+
+
+
+
+
+ partyId:
+
+ PartyIdInfo
+
+
+
+
+
+
+ Party Id type, id, sub ID or type, and FSP Id.
+
+
+
+
+
+
+ errorInformation:
+
+ ErrorInformation
+
+
+
+
+
+ If the Party failed to be added, error information should be provided. Otherwise, this parameter should be empty to indicate success.
+
+
+
+
+
+
+
+
+
+
+
+ PartySubIdOrType:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+
+
+
+
+
+ Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType.
+
+
+
+
+
+
+
+ PersonalIdentifierType:
+
+ string , x ∈ {
+ PASSPORT
+ ,
+ NATIONAL_REGISTRATION
+ ,
+ DRIVING_LICENSE
+ ,
+ ALIEN_REGISTRATION
+ ,
+ NATIONAL_ID_CARD
+ ,
+ EMPLOYER_ID
+ ,
+ TAX_ID_NUMBER
+ ,
+ SENIOR_CITIZENS_CARD
+ ,
+ MARRIAGE_CERTIFICATE
+ ,
+ HEALTH_CARD
+ ,
+ VOTERS_ID
+ ,
+ UNITED_NATIONS
+ ,
+ OTHER_ID
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - PASSPORT A passport number is used as reference to a Party. - NATIONAL_REGISTRATION A national registration number is used as reference to a Party. - DRIVING_LICENSE A driving license is used as reference to a Party. - ALIEN_REGISTRATION An alien registration number is used as reference to a Party. - NATIONAL_ID_CARD A national ID card number is used as reference to a Party. - EMPLOYER_ID A tax identification number is used as reference to a Party. - TAX_ID_NUMBER A tax identification number is used as reference to a Party. - SENIOR_CITIZENS_CARD A senior citizens card number is used as reference to a Party. - MARRIAGE_CERTIFICATE A marriage certificate number is used as reference to a Party. - HEALTH_CARD A health card number is used as reference to a Party. - VOTERS_ID A voter’s identification number is used as reference to a Party. - UNITED_NATIONS An UN (United Nations) number is used as reference to a Party. - OTHER_ID Any other type of identification type number is used as reference to a Party.
+
+
+
+
+
+
+
+ QRCODE:
+
+ string
+
+
+
+ (1 to 64 chars)
+
+
+
+
+
+
+ QR code used as One Time Password.
+
+
+
+
+
+
+
+ QuotesIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /quotes/{ID} object
+
+
+
+
+
+
+ transferAmount:
+
+ Money
+
+
+
+
+
+
+ The amount of money that the Payee FSP should receive.
+
+
+
+
+
+
+ payeeReceiveAmount:
+
+ Money
+
+
+
+
+
+ The amount of Money that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees.
+
+
+
+
+
+
+ payeeFspFee:
+
+ Money
+
+
+
+
+
+ Payee FSP’s part of the transaction fee.
+
+
+
+
+
+
+ payeeFspCommission:
+
+ Money
+
+
+
+
+
+ Transaction commission from the Payee FSP.
+
+
+
+
+
+
+ expiration:
+
+ string
+
+
+
+
+
+ Date and time until when the quotation is valid and can be honored when used in the subsequent transaction.
+
+
+
+
+
+
+ geoCode:
+
+ GeoCode
+
+
+
+
+
+ Longitude and Latitude of the Payee. Can be used to detect fraud.
+
+
+
+
+
+
+ ilpPacket:
+
+ string
+
+
+
+
+
+ The ILP Packet that must be attached to the transfer by the Payer.
+
+
+
+
+
+
+ condition:
+
+ string
+
+
+
+
+
+ The condition that must be attached to the transfer by the Payer.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ QuotesPostRequest:
+
+ object
+
+
+
+
+
+
+
+ POST /quotes object
+
+
+
+
+
+
+ quoteId:
+
+ string
+
+
+
+
+
+ Common ID between the FSPs for the quote object, decided by the Payer FSP. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction.
+
+
+
+
+
+
+ transactionId:
+
+ string
+
+
+
+
+
+ Common ID (decided by the Payer FSP) between the FSPs for the future transaction object. The actual transaction will be created as part of a successful transfer process. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction.
+
+
+
+
+
+
+ transactionRequestId:
+
+ string
+
+
+
+
+ Identifies an optional previously-sent transaction request.
+
+
+
+
+
+
+ payee:
+
+ Party
+
+
+
+
+
+
+ Information about the Payee in the proposed financial transaction.
+
+
+
+
+
+
+ payer:
+
+ Party
+
+
+
+
+
+
+ Information about the Payer in the proposed financial transaction.
+
+
+
+
+
+
+ amountType:
+
+ string
+
+
+
+
+
+ SEND for send amount, RECEIVE for receive amount.
+
+
+
+
+
+
+ amount:
+
+ Money
+
+
+
+
+
+
+ Depending on amountType. If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive any fees. The amount is not updated by any of the participating entities.
+
+
+
+
+
+
+ fees:
+
+ Money
+
+
+
+
+
+ The fees in the transaction. The fees element should be empty if fees should be non-disclosed. The fees element should be non-empty if fees should be disclosed.
+
+
+
+
+
+
+ transactionType:
+
+ TransactionType
+
+
+
+
+
+
+ Type of transaction for which the quote is requested.
+
+
+
+
+
+
+ geoCode:
+
+ GeoCode
+
+
+
+
+
+ Longitude and Latitude of the initiating Party. Can be used to detect fraud.
+
+
+
+
+
+
+ note:
+
+ string
+
+
+
+
+ A memo that will be attached to the transaction.
+
+
+
+
+
+
+ expiration:
+
+ string
+
+
+
+
+ Expiration is optional. It can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, and Merchant to know that their request has a time limit.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ Refund:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type Refund.
+
+
+
+
+
+
+ originalTransactionId:
+
+ string
+
+
+
+
+
+ Reference to the original transaction ID that is requested to be refunded.
+
+
+
+
+
+
+ refundReason:
+
+ string
+
+
+
+
+ Free text indicating the reason for the refund.
+
+
+
+
+
+
+
+
+
+
+
+ RefundReason:
+
+ string
+
+
+
+ (1 to 128 chars)
+
+
+
+
+
+
+ Reason for the refund.
+
+
+
+
+
+
+
+ TokenCode:
+
+ string
+
+
+ , must match ^[0-9a-zA-Z]{4,32}$
+
+
+
+
+
+ The API data type TokenCode is a JSON String between 4 and 32 characters, consisting of digits or upper or lowercase characters from a to z.
+
+
+
+
+
+
+
+ Transaction:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type Transaction. The Transaction type is used to carry end-to-end data between the Payer FSP and the Payee FSP in the ILP Packet. Both the transactionId and the quoteId in the data model are decided by the Payer FSP in the POST /quotes.
+
+
+
+
+
+
+ transactionId:
+
+ string
+
+
+
+
+
+ ID of the transaction, the ID is decided by the Payer FSP during the creation of the quote.
+
+
+
+
+
+
+ quoteId:
+
+ string
+
+
+
+
+
+ ID of the quote, the ID is decided by the Payer FSP during the creation of the quote.
+
+
+
+
+
+
+ payee:
+
+ Party
+
+
+
+
+
+
+ Information about the Payee in the proposed financial transaction.
+
+
+
+
+
+
+ payer:
+
+ Party
+
+
+
+
+
+
+ Information about the Payer in the proposed financial transaction.
+
+
+
+
+
+
+ amount:
+
+ Money
+
+
+
+
+
+
+ Transaction amount to be sent.
+
+
+
+
+
+
+ transactionType:
+
+ TransactionType
+
+
+
+
+
+
+ Type of the transaction.
+
+
+
+
+
+
+ note:
+
+ string
+
+
+
+
+ Memo associated to the transaction, intended to the Payee.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ TransactionInitiator:
+
+ string , x ∈ {
+ PAYER
+ ,
+ PAYEE
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - PAYER Sender of funds is initiating the transaction. The account to send from is either owned by the Payer or is connected to the Payer in some way. - PAYEE Recipient of the funds is initiating the transaction by sending a transaction request. The Payer must approve the transaction, either automatically by a pre-generated OTP or by pre-approval of the Payee, or by manually approving in his or her own Device.
+
+
+
+
+
+
+
+ TransactionInitiatorType:
+
+ string , x ∈ {
+ CONSUMER
+ ,
+ AGENT
+ ,
+ BUSINESS
+ ,
+ DEVICE
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - CONSUMER Consumer is the initiator of the transaction. - AGENT Agent is the initiator of the transaction. - BUSINESS Business is the initiator of the transaction. - DEVICE Device is the initiator of the transaction.
+
+
+
+
+
+
+
+ TransactionRequestsIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /transactionRequests/{ID} object
+
+
+
+
+
+
+ transactionId:
+
+ string
+
+
+
+
+ Identifies a related transaction (if a transaction has been created).
+
+
+
+
+
+
+ transactionRequestState:
+
+ string
+
+
+
+
+
+ State of the transaction request.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ TransactionRequestsPostRequest:
+
+ object
+
+
+
+
+
+
+
+ POST /transactionRequests object
+
+
+
+
+
+
+ transactionRequestId:
+
+ string
+
+
+
+
+
+ Common ID between the FSPs for the transaction request object, decided by the Payee FSP. The ID should be reused for resends of the same transaction request. A new ID should be generated for each new transaction request.
+
+
+
+
+
+
+ payee:
+
+ Party
+
+
+
+
+
+
+ Information about the Payee in the proposed financial transaction.
+
+
+
+
+
+
+ payer:
+
+ PartyIdInfo
+
+
+
+
+
+
+ Information about the Payer type, id, sub-type/id, FSP Id in the proposed financial transaction.
+
+
+
+
+
+
+ amount:
+
+ Money
+
+
+
+
+
+
+ Requested amount to be transferred from the Payer to Payee.
+
+
+
+
+
+
+ transactionType:
+
+ TransactionType
+
+
+
+
+
+
+ Type of transaction.
+
+
+
+
+
+
+ note:
+
+ string
+
+
+
+
+ Reason for the transaction request, intended to the Payer.
+
+
+
+
+
+
+ geoCode:
+
+ GeoCode
+
+
+
+
+
+ Longitude and Latitude of the initiating Party. Can be used to detect fraud.
+
+
+
+
+
+
+ authenticationType:
+
+ string
+
+
+
+
+ OTP or QR Code, otherwise empty.
+
+
+
+
+
+
+ expiration:
+
+ string
+
+
+
+
+ Can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, Merchant to know that their request has a time limit.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ TransactionRequestState:
+
+ string , x ∈ {
+ RECEIVED
+ ,
+ PENDING
+ ,
+ ACCEPTED
+ ,
+ REJECTED
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - RECEIVED Payer FSP has received the transaction from the Payee FSP. - PENDING Payer FSP has sent the transaction request to the Payer. - ACCEPTED Payer has approved the transaction. - REJECTED Payer has rejected the transaction.
+
+
+
+
+
+
+
+ TransactionScenario:
+
+ string , x ∈ {
+ DEPOSIT
+ ,
+ WITHDRAWAL
+ ,
+ TRANSFER
+ ,
+ PAYMENT
+ ,
+ REFUND
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - DEPOSIT Used for performing a Cash-In (deposit) transaction. In a normal scenario, electronic funds are transferred from a Business account to a Consumer account, and physical cash is given from the Consumer to the Business User. - WITHDRAWAL Used for performing a Cash-Out (withdrawal) transaction. In a normal scenario, electronic funds are transferred from a Consumer’s account to a Business account, and physical cash is given from the Business User to the Consumer. - TRANSFER Used for performing a P2P (Peer to Peer, or Consumer to Consumer) transaction. - PAYMENT Usually used for performing a transaction from a Consumer to a Merchant or Organization, but could also be for a B2B (Business to Business) payment. The transaction could be online for a purchase in an Internet store, in a physical store where both the Consumer and Business User are present, a bill payment, a donation, and so on. - REFUND Used for performing a refund of transaction.
+
+
+
+
+
+
+
+ TransactionsIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /transactions/{ID} object
+
+
+
+
+
+
+ completedTimestamp:
+
+ string
+
+
+
+
+ Time and date when the transaction was completed.
+
+
+
+
+
+
+ transactionState:
+
+ string
+
+
+
+
+
+ State of the transaction.
+
+
+
+
+
+
+ code:
+
+ string
+
+
+
+
+ Optional redemption information provided to Payer after transaction has been completed.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ TransactionState:
+
+ string , x ∈ {
+ RECEIVED
+ ,
+ PENDING
+ ,
+ COMPLETED
+ ,
+ REJECTED
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - RECEIVED Payee FSP has received the transaction from the Payer FSP. - PENDING Payee FSP has validated the transaction. - COMPLETED Payee FSP has successfully performed the transaction. - REJECTED Payee FSP has failed to perform the transaction.
+
+
+
+
+
+
+
+ TransactionSubScenario:
+
+ string
+
+
+ , must match ^[A-Z_]{1,32}$
+
+
+
+
+
+ Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type).
+
+
+
+
+
+
+
+ TransactionType:
+
+ object
+
+
+
+
+
+
+
+ Data model for the complex type TransactionType.
+
+
+
+
+
+
+ scenario:
+
+ string
+
+
+
+
+
+ Deposit, withdrawal, refund, …
+
+
+
+
+
+
+ subScenario:
+
+ string
+
+
+
+
+ Possible sub-scenario, defined locally within the scheme.
+
+
+
+
+
+
+ initiator:
+
+ string
+
+
+
+
+
+ Who is initiating the transaction - Payer or Payee
+
+
+
+
+
+
+ initiatorType:
+
+ string
+
+
+
+
+
+ Consumer, agent, business, …
+
+
+
+
+
+
+ refundInfo:
+
+ Refund
+
+
+
+
+
+ Extra information specific to a refund scenario. Should only be populated if scenario is REFUND
+
+
+
+
+
+
+ balanceOfPayments:
+
+ string
+
+
+
+
+ Balance of Payments code.
+
+
+
+
+
+
+
+
+
+
+
+ TransfersIDPutResponse:
+
+ object
+
+
+
+
+
+
+
+ PUT /transfers/{ID} object
+
+
+
+
+
+
+ fulfilment:
+
+ string
+
+
+
+
+ Fulfilment of the condition specified with the transaction. Mandatory if transfer has completed successfully.
+
+
+
+
+
+
+ completedTimestamp:
+
+ string
+
+
+
+
+ Time and date when the transaction was completed.
+
+
+
+
+
+
+ transferState:
+
+ string
+
+
+
+
+
+ State of the transfer.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ TransfersPostRequest:
+
+ object
+
+
+
+
+
+
+
+ POST /transfers Request object
+
+
+
+
+
+
+ transferId:
+
+ string
+
+
+
+
+
+ The common ID between the FSPs and the optional Switch for the transfer object, decided by the Payer FSP. The ID should be reused for resends of the same transfer. A new ID should be generated for each new transfer.
+
+
+
+
+
+
+ payeeFsp:
+
+ string
+
+
+
+
+
+ Payee FSP in the proposed financial transaction.
+
+
+
+
+
+
+ payerFsp:
+
+ string
+
+
+
+
+
+ Payer FSP in the proposed financial transaction.
+
+
+
+
+
+
+ amount:
+
+ Money
+
+
+
+
+
+
+ The transfer amount to be sent.
+
+
+
+
+
+
+ ilpPacket:
+
+ string
+
+
+
+
+
+ The ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data.
+
+
+
+
+
+
+ condition:
+
+ string
+
+
+
+
+
+ The condition that must be fulfilled to commit the transfer.
+
+
+
+
+
+
+ expiration:
+
+ string
+
+
+
+
+
+ Expiration can be set to get a quick failure expiration of the transfer. The transfer should be rolled back if no fulfilment is delivered before this time.
+
+
+
+
+
+
+ extensionList:
+
+ ExtensionList
+
+
+
+
+
+ Optional extension, specific to deployment.
+
+
+
+
+
+
+
+
+
+
+
+ TransferState:
+
+ string , x ∈ {
+ RECEIVED
+ ,
+ RESERVED
+ ,
+ COMMITTED
+ ,
+ ABORTED
+
+ }
+
+
+
+
+
+
+
+
+ Below are the allowed values for the enumeration - RECEIVED Next ledger has received the transfer. - RESERVED Next ledger has reserved the transfer. - COMMITTED Next ledger has successfully performed the transfer. - ABORTED Next ledger has aborted the transfer due a rejection or failure to perform the transfer.
+
+
+
+
+
+
+
+ UndefinedEnum:
+
+ string
+
+
+ , must match ^[A-Z_]{1,32}$
+
+
+
+
+
+ The API data type UndefinedEnum is a JSON String consisting of 1 to 32 uppercase characters including an underscore character (_).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+ /_book/assets/.gitkeep b/_book/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve the PUT end-point)A1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 8. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve both the POST and PUT end-points)A1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A7. User Lookup GET /parties/<idType>/<id>A7. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A9. User Lookup PUT /parties/<idType>/<id>A9. User Lookup <br>PUT /parties/<idType>/<id>A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+ Settlements Engine[Not supported by viewer]A.3. Store SettlementB.3. Retrieve Settlement DataD.3. Store Settlement Acks[Not supported by viewer]DBDB<alt> E.3 Position Update Failure Notification[Not supported by viewer]Central Services<font style="font-size: 20px">Central Services</font>Settlement Adapter<font style="font-size: 18px">Settlement Adapter</font>FSP[Not supported by viewer]E.3. Notification[Not supported by viewer]E.2 PositionUpdate Consumed[Not supported by viewer]positionspositions<br>Scheme Settlement ProcessorScheme Settlement Processor<br>Settlement APISettlement APISettlements HandlerSettlements HandlerHub Operator[Not supported by viewer]A.1 Create SettlementA.4. OK (201)[Not supported by viewer]A.2. Create SettlementB.2. Request Settlement ReportD.2. Process Settlement Acks[Not supported by viewer]B.1. Request Settlement ReportB.4. OK (200) - Settlement Report Received<b>B</b>.1. Request Settlement Report<br><b>B</b>.4. OK (200) - Settlement Report Received<br>D.1. Send Settlement AcknowledgementD.5. OK (200) - Provide Settlement Ack Result<alt> Error (5xx)[Not supported by viewer]E.1 Update Position[Not supported by viewer]Settlement ProcessesA. Create SettlementB. Request Settlement ReportC. Process SettlementD. Provider Sends through AcksE. Position Updates from Settlement[Not supported by viewer]C. Process Settlement<b>C</b>. Process SettlementSettlement Bank[Not supported by viewer]E.4 Position change due to Settlement[Not supported by viewer]OK (200)[Not supported by viewer]<alt> E.4 Position change failure fromSettlement[Not supported by viewer]notificationsnotificationsPositionHandlerPositionHandlerDBDBMojaloop Hub[Not supported by viewer]CentralEventProcessor[Not supported by viewer]NotificationAdapter/email, ml-api/[Not supported by viewer]
\ No newline at end of file
+
+
+Mojaloop AdapterMojaloop AdapterCentral-LedgerCentral-LedgerMojaloopAdapter[Not supported by viewer]C 1. TransferC 1. Transferrequest_to_preparerequest_to_prepareC 1.2[Not supported by viewer]C 1.3[Not supported by viewer]prepared.notificationprepared.notificationC 1.4C 1.4fulfiled.notificationfulfiled.notificationrequest_to_fulfilrequest_to_fulfilFulfil TransferFulfil TransferC 1.8C 1.8C 1.9[Not supported by viewer]C 1.10[Not supported by viewer]C 1.11C 1.11C 1.12 Fulfil NotifyC 1.12 Fulfil NotifyC 1.1C 1.1C 1.5C 1.5DBDBMojaloop Open Source Services[Not supported by viewer]positionspositionsAccount Lookup Service(Parties / Participant)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]A 2. MSISDN based lookupA 2. MSISDN <br>based lookupDBDB Database DatabaseFSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]AAA 1. User LookupA 1. User LookupA 3. Receiver DetailsA 3. Receiver DetailsBBMerchant Registry[Not supported by viewer]A 2. mID based lookupA 2. mID based <br>lookupB 1. QuoteB 1. QuoteMojaloop Hub<font>Mojaloop Hub<br></font>Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]LedgerLedger<br>LedgerLedger<br>CCkafkakafkakafkakafkakafkakafkakafkakafkakafkakafkaC 1.6PrepareTransfer[Not supported by viewer]C 1.7C 1.7C 1.11C 1.11C 1.12C 1.12Fulfil NotifyFulfil NotifyC 1.13Fulfil Notify[Not supported by viewer]B 2. Fee /Commission[Not supported by viewer]A 4. Get receiver details[Not supported by viewer]B 1. QuoteB 1. QuoteD 6.D 6.Central-SettlementCentral-SettlementD 5. Update Positions[Not supported by viewer]settlement.notificationssettlement.notificationskafkakafkaScheme Settlement Processor<span>Scheme Settlement Processor</span><br>Hub OperatorHub OperatorD 1. Create Settlement[Not supported by viewer]DDD 2. Query SettlementReport(Pull)[Not supported by viewer]D 4. SendAcks(Push)[Not supported by viewer]SettlementBankSettlement<br>Bank<br>D 3. Process Settlements[Not supported by viewer]Bank[Not supported by viewer]D 7. Position Notifications Change resultD 7. Position Notifications Change resultD 7. Settlement NotificationD 7. Settlement NotificationkafkakafkaGSMA[Not supported by viewer](Schema customised by Hub Operator)[Not supported by viewer]Pathfinder[Not supported by viewer]ALS Oracle MSISDN Adapter[Not supported by viewer]ALS Oracle Merchant Service[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+C 4. TransferFulfil Notify[Not supported by viewer]Account Lookup Services[Not supported by viewer]PathfinderPathfinderFSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]SchemeAdapter[Not supported by viewer]A 2. MSISDN based lookupA 2. MSISDN based lookupFSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]AAA 1. User LookupA 1. User <br>LookupBBMerchant Registry[Not supported by viewer]A 2. mID based lookupA 2. mID based lookupMojaloop Hub[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]LedgerLedger<br>LedgerLedger<br>CCC 1. Transfer Prepare[Not supported by viewer]A 3. ReceiverDetailsA 3. Receiver<br>Details<br> Fee /Comm[Not supported by viewer]Get ReceiverDetails[Not supported by viewer] C 2. TransferPrepare[Not supported by viewer]C 5. TransferFulfil Notify[Not supported by viewer]TransferPrepare[Not supported by viewer]C 3. TransferFulfilC 3. Transfer<br>Fulfil<br>TransferFulfil[Not supported by viewer]B 1. QuoteB 1. QuoteCentral Services[Not supported by viewer]B 1. QuoteB 1. Quote<br>Settlement ProviderSettlement ProviderHub OperatorHub OperatorD 1. Create SettlementD 1. Create SettlementDDD 2. Query Settlement Report(Pull)D 2. Query Settlement Report<br>(Pull)<br>D 3. Send Acknowledgements(Push)D 3. Send Acknowledgements<br>(Push)<br>TransfersSettlementsNotificationsMonitoringLogging[Not supported by viewer]
\ No newline at end of file
+
+
+Helm(Package Manager for K8s, Templatized Deployments and Configuration)[Not supported by viewer]Kubernetes(Abstraction layer for Infrastructure, Infrastructure as a Policy, Container Orchestration)[Not supported by viewer]Docker(Container Engine)[Not supported by viewer]Infrastructure(AWS, Azure, On-Prem)[Not supported by viewer]EFK - ElasticSearch / Fluentd / Kabana(Log Search / Collection / Monitoring)[Not supported by viewer]Promfana - Prometheus / Grafana(Log Search / Collection / Monitoring)[Not supported by viewer]Zipkin(Future - Distributed Tracing)[Not supported by viewer]Rancher(Infrastructure Management)[Not supported by viewer]PostgreSQL(Deprecated - Data)[Not supported by viewer]MongoDB(CEP - Data)[Not supported by viewer]MySQL(Percona - Data)[Not supported by viewer]Kafka(Message - Streaming)[Not supported by viewer]Mojaloop API Adapter(API - Transfers)[Not supported by viewer]Mojaloop API Adapter(Handler - Notifications)[Not supported by viewer]Central-Services(API - Operational Admin)[Not supported by viewer]Central-Services(Handler - Prepare)[Not supported by viewer]Central-Services(Handler - Position)[Not supported by viewer]Central-Services(Handler - Fulfil)[Not supported by viewer]Central-Services(Handler - Get Transfers)[Not supported by viewer]Central-Services(Handler - Timeout)[Not supported by viewer]Simulator(API - QA FSP Simulator)[Not supported by viewer]Forensic-Logging-Sidecar(Auditing)[Not supported by viewer]Central-KMS(Key Management Store)[Not supported by viewer]Central-Directory(Participant Lookup)[Not supported by viewer]Central-End-User-Registry(Custom Participant Store)[Not supported by viewer]Mock-Pathfinder(Mocked Pathfinder)[Not supported by viewer]Central-Event-Processor(CEP)[Not supported by viewer]Email-Notifier(Handler - Email)[Not supported by viewer]Central-Services(Handler - Admin)[Not supported by viewer]Central-Hub(Retired - Operational Web Interface)[Not supported by viewer]Interop-Switch(To be Retired - Transfers, Quotes, Parties, Participants)[Not supported by viewer]Circle-CI(Test, Build, Deploy)[Not supported by viewer]Docker Hub(Container Repository)[Not supported by viewer]NPM Org(NPM Repository)[Not supported by viewer]
\ No newline at end of file
+
+
+Helm(Package Manager for K8s, Templatized Deployments and Configuration)[Not supported by viewer]Kubernetes(Abstraction layer for Infrastructure, Infrastructure as a Policy, Container Orchestration)[Not supported by viewer]Docker(Container Engine)[Not supported by viewer]Infrastructure(AWS, Azure, On-Prem)[Not supported by viewer]EFK - ElasticSearch / Fluentd / Kabana(Log Search / Collection / Monitoring)[Not supported by viewer]Promfana - Prometheus / Grafana(Log Search / Collection / Monitoring)[Not supported by viewer]Zipkin(Future - Distributed Tracing)[Not supported by viewer]Rancher(Infrastructure Management)[Not supported by viewer]PostgreSQL(Deprecated - Data)[Not supported by viewer]MongoDB(CEP - Data)[Not supported by viewer]MySQL(Percona - Data)[Not supported by viewer]Kafka(Message - Streaming)[Not supported by viewer]Mojaloop API Adapter(API - Transfers)[Not supported by viewer]Mojaloop API Adapter(Handler - Notifications)[Not supported by viewer]Central-Services(API - Operational Admin)[Not supported by viewer]Central-Services(Handler - Prepare)[Not supported by viewer]Central-Services(Handler - Position)[Not supported by viewer]Central-Services(Handler - Fulfil)[Not supported by viewer]Central-Services(Handler - Get Transfers)[Not supported by viewer]Central-Services(Handler - Timeout)[Not supported by viewer]Simulator(API - QA FSP Simulator)[Not supported by viewer]Forensic-Logging-Sidecar(Auditing)[Not supported by viewer]Central-KMS(Key Management Store)[Not supported by viewer]ALS - Account-Lookup-Service(API - Parties, Participant)[Not supported by viewer]ALS-Oracle-Msisdn-Service(Pathfinder Lookup Adapter)[Not supported by viewer]Mock-Pathfinder(Mocked Pathfinder)[Not supported by viewer]Central-Event-Processor(CEP)[Not supported by viewer]Email-Notifier(Handler - Email)[Not supported by viewer]Central-Services(Handler - Admin)[Not supported by viewer]Moja-Hub(Future - Operational Web Interface)[Not supported by viewer]Interop-Switch(To be Retired - Transfers, Quotes, Parties, Participants)[Not supported by viewer]Circle-CI(Test, Build, Deploy)[Not supported by viewer]Docker Hub(Container Repository)[Not supported by viewer]NPM Org(NPM Repository)[Not supported by viewer]GitBooks(Documetation)[Not supported by viewer]
\ No newline at end of file
+
+3x MasterNodes[Not supported by viewer]3x ETCdNodes[Not supported by viewer]Alt: DSN Round Robin Fail-overAlt: DSN Round Robin Fail-overLayer 4 Load Balancer<font style="font-size: 14px">Layer 4 Load Balancer</font>FirewallFirewallDMZ[Not supported by viewer]ExternalConsumer[Not supported by viewer]3x WorkerNodes[Not supported by viewer]KEY[Not supported by viewer]Ingress Controller deployed as a DaemonSet[Not supported by viewer]
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0 Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Oracle Registry Store" as ORACLE_STORE
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Internal/External Oracle Data Store/Service" #LightGrey
+participant ORACLE_STORE
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP --> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_API
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details. \nError code: 3200
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
+ end alt
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ORACLE_API
+
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information. \nError code: 3200
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information. \nError code: 3200
+
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}?currency={CURRENCY}
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occured
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 3200
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0 Get Psh arties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Participant DAO" as ALS_CENTRALSERVICE_PARTICIPANT_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+boundary "Oracle Registry Store" as ORACLE_STORE
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+participant ALS_CENTRALSERVICE_PARTICIPANT_DAO
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+end box
+
+box "Internal/External Oracle Data Store/Service" #LightGrey
+participant ORACLE_STORE
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP --> ALS_API: Request to get parties's FSP details \nGET - /parties/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_API
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get parties's FSP details. \nError code: 3200
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification. \nError code: 3200
+
+ '********************* Validate Participant - START ************************
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Request participant information. \nError code: 3200
+ activate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> CENTRALSERVICE_API: GET - /participants/{fspName}. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_PARTICIPANT_DAO: Return participant information
+ deactivate CENTRALSERVICE_API
+
+ ALS_CENTRALSERVICE_PARTICIPANT_DAO -> ALS_PARTICIPANT_HANDLER: Return participant information
+
+ deactivate ALS_CENTRALSERVICE_PARTICIPANT_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate participant. \nError code: 3200 TBC!!!
+
+ '********************* Validate Participant - END ************************
+
+
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
+
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
+ end alt
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ORACLE_API
+
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
+ deactivate ORACLE_STORE
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information. \nError code: 3200
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Destination Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Destination Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Destination Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Destination Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Destination Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information. \nError code: 3200
+
+ activate ALS_API
+ ALS_API --> PAYEE_FSP: Parties Callback to Destination: GET - /parties/{Type}/{ID}?currency={CURRENCY}
+ activate PAYEE_FSP
+
+ PAYEE_FSP --> ALS_API: Callback with Participant Information: PUT - /parties/{Type}/{ID}?currency={CURRENCY}
+ deactivate PAYEE_FSP
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER:
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API
+ deactivate ALS_API
+
+ ALS_API -> ALS_PARTICIPANT_HANDLER:
+ deactivate ALS_API
+
+ else Empty list of End-Points returned or Error occured
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 3200
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.1 Put Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "PAYER_FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+actor "Payee_FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Put Party's Details
+ PAYER_FSP -> ALS: Callback for the Get Party's request \nPUT - /parties/{Type}/{ID}
+ note right of PAYER_FSP #yellow
+ Message:
+ party: {
+ partyIdInfo: {
+ “partyIdType”: “PERSONAL_ID”,
+ “partyIdentifier”: “1551212”,
+ “partySubIdOrType”: “License”,
+ “fspId”: “1234”
+ },
+ merchantClassificationCode: 4321,
+ “name”: “Justin Trudeau”,
+ “personalInfo”: {
+ “complexName”: {
+ “firstName”: “Justin”,
+ “middleName”: “Pierre”,
+ “lastName”: “Trudeau”
+ },
+ “dateOfBirth”: “1971-12-25”
+ }
+ }
+ end note
+ activate ALS
+ ALS -> PARTIES_HANDLER: Put Party by ID and Type \n(PartiesByTypeAndID2)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 200
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
+## INSTRUCTIONS
+# Insert variables to be loaded into Gitbook
+# They can be referenced via {{ book.importedVars. }} the following example
+#
+# ```markdown
+# This is the value of my variable {{ book.importedVars. }}
+#
+#```
+#
+
+mojaloop:
+ spec:
+ version: v1.0
+ uri:
+ doc: https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf
+ api: https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml
/_book/central-settlement/.gitkeep b/_book/central-settlement/.gitkeep
new file mode 100644
index 0000000..e69de29
+
+
+
+
+
+
+ Changelog · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2019-03-08
+
+Updated to use gitbook-cli
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Changelog","level":"1.8","depth":1,"previous":{"title":"Mojaloop Roadmap","level":"1.7","depth":1,"path":"mojaloop-roadmap.md","ref":"mojaloop-roadmap.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"changelog.md","mtime":"2019-03-08T16:40:38.989Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":".","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+All APIs should be documented in RAML or Swagger, see Architecture-Documentation-Guidelines](Architecture-Documentation-Guidelines.md)
+Section Headings
+
+Do not number headings - for example, "Prepare and Fulfill", not "C - Prepare and Fulfill"
+Make sure section headings (# ) match the heading to which they correspond in the comprehensive PDF (built from the dactyl config file)
+Do not include the word "documentation" in headings
+
+Retrievability
+
+For sections that contain many subsections of endpoints or methods, provide a table of contents at the beginning of the section
+Don't say the word project; use component, microservice, interfaces, etc
+
+Language
+Instead of the word "project," use a specific noun such as component, microservice, or interface.
+Procedures
+
+Introduce procedures with H3 (###) or H4 (####) headers (not H2 (##)).
+Do not use numbers in procedure section headings.
+Use ordered-list tagging for procedure steps. For example:
+Step 1
+Step 2
+Step 2
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"API Documentation","level":"1.2.4.1","depth":3,"next":{"title":"Documentation Style Guide","level":"1.2.4.2","depth":3,"path":"contributors-guide/documentation/documentation-style-guide.md","ref":"contributors-guide/documentation/documentation-style-guide.md","articles":[]},"previous":{"title":"Documentation","level":"1.2.4","depth":2,"path":"contributors-guide/documentation/README.md","ref":"contributors-guide/documentation/README.md","articles":[{"title":"API Documentation","level":"1.2.4.1","depth":3,"path":"contributors-guide/documentation/api-documentation.md","ref":"contributors-guide/documentation/api-documentation.md","articles":[]},{"title":"Documentation Style Guide","level":"1.2.4.2","depth":3,"path":"contributors-guide/documentation/documentation-style-guide.md","ref":"contributors-guide/documentation/documentation-style-guide.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/documentation/api-documentation.md","mtime":"2019-03-08T16:40:45.168Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+In most cases, Mojaloop follows the latest edition of the Associated Press Stylebook. The following are foundation-specific guidelines which have been updated and slightly modified.
+Acronyms
+Spell out all acronyms on first reference. Include the acronym in parentheses immediately after the full spelling only if you refer to it again in the document. Example: Kofi Annan, chairman of the board of the Alliance for a Green Revolution in Africa (AGRA), traveled to Nairobi this month. It was his first visit to the AGRA office.
+Ampersand
+Only use an ampersand (&) when it's part of a formal name like the Bill & Melinda Gates Foundation. In all other cases, spell out and.
+Bill & Melinda Gates Foundation
+Our formal legal name is the Bill & Melinda Gates Foundation. Use it on first reference. Always use the ampersand (&) and always capitalize Foundation when Bill & Melinda Gates comes before it.
+Never abbreviate the foundation's name as BMGF.
+Never translate the foundation name into other languages, as it is a proper noun. The one exception to this is when translating the foundation's name into Chinese, in which case translation is acceptable.
+Do not capitalize foundation when the word stands alone. Example: The foundation's new headquarters will be built near Seattle Center.
+Use Gates Foundation only if you are sure the context makes the foundation's identity clear. There is a Gates Family Foundation in Colorado, so we need to be careful. Example: The Bill & Melinda Gates Foundation and the Ford Foundation co-sponsored the event. A Gates Foundation staff member gave closing remarks.
+The entity that manages the endowment is formally and legally known as the Bill & Melinda Gates Foundation Trust. You will not need to refer to this entity often, but when you do, write it out on first reference and refer to it as the asset trust thereafter.
+Bold and colons
+Frequently I see structures (like in this very comment!) where you have introductory terms or phrases that are bolded and set apart from the contents with a colon. Should the colon also be bolded, or not? (I frequently see it done both ways.)
+Buffett
+Note the spelling: two fs and two ts (i.e., Warren Buffett).
+Bulleted lists
+Introduce bulleted lists with a colon when the listed items complete the lead-in sentence or phrase. Exception: never use colons in headings or subheadings to introduce bulleted lists.
+Capitalize the first words of and use periods with listed items only if they are full sentences. Examples:
+
+This is a complete sentence.
+not a complete sentence
+
+Never link items in a bulleted list with coordinating conjunctions and punctuation (semicolons or commas) as you would in a sentence-style list. In other words, never do:
+
+this,
+that, or
+the other thing.
+
+Captions
+Caption photos whenever possible. It helps people understand our work.
+Write captions as single gerund (ing verb) phrases, followed by the city, state or country, and year the photo was taken in parentheses. Example: A doctor preparing a vaccine for delivery (Brazzaville, Congo, 2007)._
+When writing a caption, be sure to introduce the people featured and explain what's happening in the image as it relates to our areas of focus. Be as brief as possible so you don't distract from the image or layout. Avoid verbs that state the obvious about what the photo's subject is doing (e.g., smiling, standing, and so on).
+If one of the co-chairs appears in a photo with other people, be sure to identify the co-chair in the caption. Don't assume everyone knows what our co-chairs look like.
+Citations
+Most fields have their own citation conventions. Adopt those used by the field in question. When citation conventions are unavailable or uncertain, follow The Chicago Manual of Style.
+When a document uses both footnotes and endnotes, for the footnotes, use the following symbols:
+
+1st note = * (asterisk)
+2nd note = † (dagger)
+3rd note = ‡ (double dagger)
+4th note = § (section sign)
+5th note = ** (2 asterisks)
+6th note = †† (2 daggers)
+7th note = ‡‡ (2 double daggers)
+8th note = §§ (2 section signs)
+
+Separate multiple superscript references (footnotes, endnotes) with commas, not semicolons.
+Clinical trials
+Use Roman numerals when referring to clinical trial phases and always capitalize Phase. Example: The company will begin Phase III trials on the new drug this spring.
+Contact information
+Use periods to separate parts of phone numbers, and begin each number with a plus sign.
+Because we work with people throughout the world, omit the international access code, which differs from country to country (it's 011 in the United States). Examples: +1.206.709.3100 (United States) +91.11.4100.3100 (India)
+Copyright and trademark notice
+All publications, media, and materials produced by or for the foundation should contain the notice shown below. The Legal team must approve all exceptions.
+ © (year) Bill & Melinda Gates Foundation. All Rights Reserved. Bill & Melinda Gates Foundation is a registered trademark in the United States and other countries.
+When possible, begin the trademark portion of the notice on a separate line.
+Dashes
+Use dashes—those the width of a capital M—to indicate asides or abrupt changes in thought. Use en dashes—those the width of a capital N—with numerical ranges.
+Do not include a space before or after a dash.
+Examples: We work to make safe, affordable financial services—particularly savings accounts—more widely available to people in developing countries.
+In the 2004 presidential election, 76 percent of U.S. college graduates ages 25-44 voted.
+Dollars ($)
+In Global Health and Global Development materials, because more than a dozen countries use dollars, specify U.S. dollars in parentheses on first mention in a document. Example: $100,000 (U.S.). Omit the parenthetical U.S. in subsequent references to dollar amounts in the same document.
+Foundation program names
+We have three programs: Global Development Program, Global Health Program, and United States Program.
+Program is capitalized when used with the full name (Global Development Program), but not when used alone (The program makes grants in several areas.).
+Use periods when abbreviating the name of the United States Program: U.S. Program.
+GH, GD, and USP are fine for internal use, but inappropriate for external publications.
+Gates family
+William Gates III is formally referred to as Bill Gates. In internal documents, use Bill—not a nickname or abbreviation.
+Use Melinda Gates when formally referring to Melinda.
+Use William H. Gates Sr. when formally referring to Bill Gates Sr. There is no comma between Gates and Sr. Bill Sr. is acceptable in internal documents.
+Plural: Gateses. Do not use an apostrophe to form the plural of the family's name. Example: The Gateses attended the opening of the new University of Washington law building.
+Possessive: The apostrophe follows Gates when you refer to something owned by either Bill or Melinda. Example: Melinda Gates' speech was well received. The apostrophe follows Gateses when you refer to something Bill and Melinda own jointly. Example: The Gateses' decision to provide free Internet access in U.S. public libraries has increased library usage and circulation overall.
+You may also phrase it this way: Bill and Melinda Gates' decision to provide free Internet access …
+See the Titles of people entry for the formal titles of Bill, Melinda, Bill Sr., and other leaders of the foundation.
+Hyphens
+There are few hard-and-fast rules when it comes to hyphens. Generally we use them to enhance the reader's understanding.
+Examples: When writing for the Bill & Melinda Gates Foundation, use real-world poverty examples to illustrate your point. When writing for the Bill & Melinda Gates Foundation, use real world-poverty examples to illustrate your point.
+In the first example, the hyphen in real-world connects real and world to form a single adjective describing poverty. In the second example, the hyphen in world-poverty connects world and poverty to form a single adjective describing examples.
+The meaning changes depending on the placement of the hyphen. In instances where a series of adjectives creates ambiguity about what they refer to, use a hyphen to clarify the intended meaning.
+When capitalizing hyphenated words, only capitalize the first part. Example: Co-chairs Bill and Melinda Gates.
+For other uses of hyphens—compound modifiers, prefixes and suffixes, fractions—refer to the Associated Press Stylebook.
+Numerals
+When referring to dollar figures, spell out million and billion. Use figures and decimals (not fractions). Do not go beyond two decimal places. Example: The foundation granted .45 million to United Way.
+When using numbers that have nothing to do with dollar figures or percentages, write them out if they are under 10, and use numerals if they are 10 or over. Example: Four program officers went on 13 site visits.
+In cases of grammatical parallelism, parallel construction always trumps this rule. For instance: Mr. Johnson has two children, 5-year-old Kyle and 13-year-old Frances.
+Never begin a sentence with a numeral. Either spell the number out or revise the sentence so it doesn't begin with a number.
+Percentages
+When using percentages, write out percent (don't use %). Use numerals instead of writing numbers out, even if they're less than 10.
+Example: This program accounts for 6 percent of our grantmaking.
+Photographer credits
+If the foundation owns the image you are using, you don't need to credit the photographer. All images in our media asset management system are foundation-owned. If the foundation has purchased a license to use the image, you may need to credit the photographer. If you have questions about photo credit requirements, contact the Foundation Communications Service Desk.
+Plain language
+We could call out a few specific constructions that are needlessly wordy. One that we frequently catch at Ripple is "in order to" instead of just "to."
+Quotation marks
+Use double quotation marks for dialogue and the citation of printed sources. Limit use of scare quotes—quotation marks meant to call attention to a quoted word or phrase and distance the author from its meaning, typically because the language is specialized, idiomatic, ironic, or misused. Example: The foundation has increasingly used “program-related investments” in recent years.
+Quoted strings and punctuation
+When describing exact strings in technical documentation, should punctuation (not part of the literal strings) be included in the quotation marks? For example, valid states include "pending," "in progress," and "completed."
+Scientific names
+Capitalize and italicize scientific names in accordance with conventions in the scientific community. Use the full version of a scientific name on first mention and the abbreviated form thereafter. For example, use Salmonella typhi first and S. typhi for each additional reference.
+Serial commas
+With lists of three or more items in a sentence, add a final comma before the coordinating conjunction and or or. Example: The foundation's three program areas are Global Development, Global Health, and the United States.
+Spacing after punctuation
+Use only one space after punctuation, including periods, colons, and semicolons.
+Spelling and capitalization conventions
+bed net: two words, no hyphen.
+email: one word, no hyphen, lowercase.
+foundation: lowercase, except as part of the full foundation name.
+grantmaking: one word, no hyphen.
+nongovernmental: one word, no hyphen.
+nonprofit: one word, no hyphen.
+postsecondary: one word, no hyphen.
+Washington state: lowercase state (unless you're referring to Washington State University, the Washington State Legislature, or something similar).
+website: one word, lowercase
+Titles of people
+Formal titles should not be capitalized unless the title precedes a person's name or appears in a headline. Example: Co-chair Melinda Gates will speak at the Washington Economic Club this year.
+Lowercase and spell out titles when they are not used with an individual's name. Example: The foundation co-chair issued a statement.
+Lowercase and spell out titles in constructions that use commas to set them off from a name. Example: Bill Gates, co-chair of the foundation, commented on the grant.
+United States
+Spell out United States when using it as a noun. Abbreviate it as U.S. (including periods) when using it as an adjective. In certain cases, as when referring to a person from the United States, it's acceptable to use American.
+Examples: The U.S. State Department is in the United States. The foundation's U.S. Program…
+URL
+Reference web addresses without the http:// as follows: www.gatesfoundation.org
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Documentation Style Guide","level":"1.2.4.2","depth":3,"next":{"title":"Frequently Asked Questions","level":"1.2.5","depth":2,"path":"contributors-guide/frequently-asked-questions.md","ref":"contributors-guide/frequently-asked-questions.md","articles":[]},"previous":{"title":"API Documentation","level":"1.2.4.1","depth":3,"path":"contributors-guide/documentation/api-documentation.md","ref":"contributors-guide/documentation/api-documentation.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/documentation/documentation-style-guide.md","mtime":"2019-03-08T16:40:45.169Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+Overview
+Mojaloop has set forward several standards to ensure that documentation throughout the project is consistent and kept up to date.
+
+All documentation that is relevant for contributors is kept on the "documentation" repository.
+The "documentation" repository is sync'ed with GitBook and all content is consumed in an easily readable format on: https://www.gitbook.com/mojaloop
+All documentation should include:
+Overview: business overview to provide the value or reason for the documentation page
+Details: appropriate summary information to support the documentation
+
+
+
+
+Documentation standards
+Documentation Style Guide
+All new documentation should confirm to the documentation and styles as discussed here.
+Code Style Guide
+NodeJS
+We follow the Standard style guidelines. Add npm install standard to you package.json.
+Java
+For Java we follow Checkstyle.Code Quality Metrics
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Documentation","level":"1.2.4","depth":2,"next":{"title":"API Documentation","level":"1.2.4.1","depth":3,"path":"contributors-guide/documentation/api-documentation.md","ref":"contributors-guide/documentation/api-documentation.md","articles":[]},"previous":{"title":"Automated Testing","level":"1.2.3.3","depth":3,"path":"contributors-guide/tools-and-technologies/automated-testing.md","ref":"contributors-guide/tools-and-technologies/automated-testing.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/documentation/README.md","mtime":"2019-03-08T16:40:45.168Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+What is Mojaloop? Mojaloop is open-source software for building interoperable digital payments platforms on a national scale. It makes it easy for different kinds of providers to link up their services and deploy low-cost financial services in new markets.
+How does it work? Most digital financial providers run on their own networks, which prevents customers who use different services from transacting with each other. Mojaloop functions like a universal switchboard, routing payments securely between all customers, regardless of which network they're on. It consists of three primary layers, each with a specific function: an interoperability layer, which connects bank accounts, mobile money wallets, and merchants in an open loop; a directory service layer, which navigates the different methods that providers use to identify accounts on each side of a transaction; a transactions settlement layer, which makes payments instant and irrevocable; and components which protect against fraud.
+Who is it for? There are many components to the code, and everyone either directly or indirectly working with digital financial transactions-fintech developers, bankers, entrepreneurs, startups-is invited to explore and use whatever parts are useful or appealing. The software as a whole is meant to be implemented on a national scale, and so it will be most applicable to mobile money providers, payments associations, central banks, and country regulators.
+Developers at fintech and financial services companies can use the code in three ways: adapt the code to the financial services standards for a country, use the code to update their own products and services or create new ones, and improve the code by proposing updates and new versions of it for other users.
+For example:
+
+A central bank may commission the use of the software by their commercial partners to speed up the deployment of a national payment gateway.
+A major payment processor can use the software to modernize their current offering, to achieve lower transaction costs without major R&D investments.
+A fintech startup can use the code to understand practically how to comply with interoperable payment APIs.
+A bank can use the code to modify their internal systems so that they easily interoperate with other payment providers.
+
+Why does it exist? Providers trying to reach developing markets with innovative, low-cost digital financial services have to build everything on their own. This raises costs and segregates services from each other. Mojaloop can be used as a foundation to help build interoperable platforms, lowering costs for providers and allowing them to integrate their services with others in the market.
+Who's behind it? Mojaloop was built in collaboration with a group of leading tech and fintech companies: Ripple, Dwolla, Software Group, ModusBox and Crosslake Technologies. Mojaloop was created by the Gates Foundation's Mojaloop, which is aimed at leveling the economic playing field by crowding in expertise and resources to build inclusive payment models to benefit the world's poor. It is free to the public as open-source software under the Apache 2.0 License.
+What platforms does Mojaloop run on? The Mojaloop platform was developed for modern cloud-computing environments. Open-source methods and widely used platforms, like Node.js, serve as the foundation layer for Mojaloop. The microservices are packaged in Docker and can be deployed to local hardware or to cloud computing environments like Amazon Web Services or Azure.
+Is it really open-source? Yes. All core modules, documentation and white papers are available under a Apache 2.0 License. Mojaloop relies on commonly used open-source software, including node.js, MuleCE, Java and PostgreSQL. Mojaloop also uses the Interledger Protocol to choreograph secure money transfers. The licenses for all of these platforms and their imported dependencies allow for many viable uses of the software.
+How can I contribute to Mojaloop? You can contribute by helping us create new functionality on our roadmap or by helping us improve the platform. For our roadmap, go to the Mojaloop Roadmap. We recommend starting with the onboarding guide and sample problem. This has been designed by the team to introduce the core ideas of the platform and software, the build methods, and our process for check-ins.
+What is supported? Currently the Central ledger components are supported by the team. The DFSP components are outdated and thus the end-to-end environment and full setup is challenging to install.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Frequently Asked Questions","level":"1.2.5","depth":2,"next":{"title":"Mojaloop Background","level":"1.3","depth":1,"path":"mojaloop-background/README.md","ref":"mojaloop-background/README.md","articles":[{"title":"Core Scenarios","level":"1.3.1","depth":2,"path":"mojaloop-background/core-scenarios.md","ref":"mojaloop-background/core-scenarios.md","articles":[]},{"title":"Level One Principles","level":"1.3.2","depth":2,"path":"mojaloop-background/level-one-principles.md","ref":"mojaloop-background/level-one-principles.md","articles":[]}]},"previous":{"title":"Documentation Style Guide","level":"1.2.4.2","depth":3,"path":"contributors-guide/documentation/documentation-style-guide.md","ref":"contributors-guide/documentation/documentation-style-guide.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/frequently-asked-questions.md","mtime":"2019-03-05T16:37:38.683Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+How do I contribute?
+* Review the Mojaloop Deployment Guide
+* Get familiar with our Standards on contributing to this project
+* View the project board and work on your good first issue
+* Review the Roadmap and contribute to future opportunities
+What work is needed?
+Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with "good first issue". In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
+There's a roadmap that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
+In general, we are looking for example implementations and bug fixes, and project enhancements.
+Where do I get help?
+Join the Mojaloop Slack Discussions to connect with other developers.
+Also checkout the FAQ
+What is the current release?
+See the Mojaloop Slack Announcements to find out information on the latest release.
+What's here and what's not
+This is free code provided under an Apache 2.0 license.
+The code is released with an Apache 2.0 license but the Specification documents under the 'mojaloop-specification' documents are published with CC BY-ND 4.0 License
+We don't provide production servers to run it on. That's up to you. You are free (and encouraged!) to clone these repositories, participate in the community of developers, and contribute back to the code.
+We are not trying to replace any mobile wallet or financial providers. We provide code to link together new and existing financial providers using a common scheme. There are central services for identifying a customer's provider, quoting, fulfillment, deferred net settlement, and shared fraud management. Each provider can take advantage of these services to send and receive money with others on the system and there's no cost to them to onboard new providers. We provide code for a simple example mobile money provider to show how integration can be done, but our example DFSP is not meant to be a production mobile money provider.
+Related Projects
+The Interledger Protocol Suite (ILP) is an open and secure standard that enables DFSPs to settle payments with minimal counter-party risk (the risk you incur when someone else is holding your money). With ILP, you can transact across different systems with no chance that someone in the middle disappears with your money. Mojaloop uses the Interledger Protocol Suite for the clearing layer. For an overview of how it works, see the Clearing Architecture Documentation.Where to I send bugs, questions, and feedback?
+UPDATE: For bugs, see Reporting bugs.
+Types of Contributors
+There are three types of contributors that we are targeting for this phase of the Mojaloop project.
+Developers or General Contributors
+These individuals are those that want to start contributing to the Mojaloop community. This could be a developer or quality assurance person that wants to write new code or fix a bug. This could also be a business, compliance or risk specialist that wants to help provide rules, write documentation or participate in requirements gathering.
+Hub Operators
+Typically these or organizations or individuals or government agencies that are interested in setting up their own Mojaloop Switch to become part of the ecosystem.
+Implementation Teams
+Implementation teams can assist banks, government offices, mobile operators or credit unions in deploying Mojaloop.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Contributors Guide","level":"1.2","depth":1,"next":{"title":"Mojaloop Deployment","level":"1.2.1","depth":2,"path":"contributors-guide/mojaloop-deployment/README.md","ref":"contributors-guide/mojaloop-deployment/README.md","articles":[{"title":"Current Version","level":"1.2.1.1","depth":3,"path":"contributors-guide/mojaloop-deployment/current-versions.md","ref":"contributors-guide/mojaloop-deployment/current-versions.md","articles":[]}]},"previous":{"title":"Mojaloop Overview","level":"1.1","depth":1,"path":"README.md","ref":"README.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/README.md","mtime":"2019-03-08T16:40:45.169Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Mojaloop Deployment
+
+## Deployment and Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+* [Software List](mojaloop-deployment.md#1-software-list)
+ * [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](mojaloop-deployment.md#12-local-deployment-and-testing-tools)
+* [Deployment](mojaloop-deployment.md#2-deployment)
+ * [Kubernetes](mojaloop-deployment.md#21-kubernetes)
+ * [Kubernetes Installation with Docker](mojaloop-deployment.md#211-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](mojaloop-deployment.md#212-kubernetes-environment-setup)
+ * [Helm](mojaloop-deployment.md#22-helm)
+ * [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation)
+ * [Postman](mojaloop-deployment.md#23-postman)
+ * [Installing Postman](mojaloop-deployment.md#231-installing-postman)
+ * [Setup Postman](mojaloop-deployment.md#231-setup-postman)
+* [Errors During Setup](mojaloop-deployment.md#24-errors-on-setup)
+
+## 1 Software List
+
+Before proceeding, please have a look at [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations) to insure the minimum resource requirements are available.
+
+### 1.1 Deployment Recommendations
+
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+**Resources Requirements:**
+
+* Control Plane \(i.e. Master Node\)
+
+ \`\`\`http request
+
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+
+ \`\`\`
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
+
+* ETCd Plane:
+
+ \`\`\`http request
+
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+
+ \`\`\`
+
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
+
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+#### 1.2 Local Deployment and Testing Tools
+
+### 1.2 Local Deployment and Testing Tools
+
+The tool set to be deployed as part of the deployment process.
+
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Install Info
+
+
+
+
+ Docker
+ Required
+
+ Docker Engine and CLI Client
+ Local Kubernetes single node cluster
+
+ [https://docs.docker.com/install](https://docs.docker.com/install)
+
+
+ Kubectl
+ Required
+
+ Kubernetes CLI for Kubernetes Management
+ Note Docker installs this part of Kubernetes install
+
+
+ [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)
+ Docker Kubernetes Install (as per this guide)
+ Mac: `brew install kubernetes-cli`
+ Ubuntu: `sudo snap install kubectl --classic`
+
+
+
+ Kubectx
+ Optional(useful tool)
+
+ Kubernetes CLI for Kubernetes Context Management Helper
+ Note Docker installs this as part of Kubernetes install
+
+
+ [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
+ Mac: `brew install kubectx`
+ Ubuntu: `sudo apt install kubectx`
+
+
+
+ Kubetail
+ Optional(useful tool)
+
+ Bash script that enables you to aggregate (tail/follow) logs from multiple
+ pods into one stream. This is the same as running `kubectl logs -f` but
+ for multiple pods.
+ Example usage `kubetail moja.* -n demo`
+
+ https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+
+ Helm helps you manage Kubernetes applications
+ Helm charts help you define, install and upgrade even the most complex
+ Kubernetes application
+
+
+ [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
+ Mac: `brew install kubernetes-helm`
+ Ubuntu: `sudo snap install helm --classic`
+
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's.
+ It presents you with a friendly GUI for the construction requests and reading
+ responces.
+ [https://www.getpostman.com/apps](https://www.getpostman.com/apps)
+
+
+## 2 Deployment
+
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+### 2.1 Kubernetes
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 2.1.1 Kubernetes Installation with Docker
+
+**Ubuntu**
+
+Note - Kubernetes with Docker is currently **not** available on Linux\(Ubuntu\) - please refer to; [https://forums.docker.com/](https://forums.docker.com/t/is-there-a-built-in-kubernetes-in-docker-ce-for-linux/54374)
+
+We recommend installing a minikube local environment by follow the steps below;
+
+With reference to [https://kubernetes.io/docs/tasks/tools/install-minikube/](https://kubernetes.io/docs/tasks/tools/install-minikube/)
+
+* VT-x or AMD-v virtualization must be enabled in your computer’s BIOS. To check this on Linux run the following and verify the output is **non-empty**:
+
+ ```bash
+ egrep --color 'vmx|svm' /proc/cpuinfo
+ ```
+
+* Install a Hypervisor:
+
+ * [KVM](http://www.linux-kvm.org/) - Recommended Linux driver
+
+ or
+
+ * [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
+
+* **kubectl** should already be installed. To verify, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+ If an error is returned, please refer to [Local Deployment and Testing Tools](mojaloop-deployment.md#12-local-deployment-and-testing-tools).
+
+* **minikube** installation
+
+ ```bash
+ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
+ ```
+
+* Start a cluster by running:
+
+ **Note** - if you have install KVM as the Hypervisor, you might need to include `--vm-driver=KVM` in the startup command. The default is to startup with VirtualBox.
+
+ ```bash
+ minikube start
+ ```
+
+ Once successfully started, you can interact with your cluster using kubectl, just like any other Kubernetes cluster.
+
+* Lunching the Minikube Dashboard
+
+ The minikube dashboard can be opened and access via your default browser.
+
+ ```bash
+ minikube dashboard
+ ```
+
+ Continue from the **Config Helm CLI and install Helm Tiller...** section below.
+
+**Mac**
+
+To install Kubernetes with Docker, follow the steps below;
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
+
+
+
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
+
+
+
+#### 2.1.2 Kubernetes environment setup:
+
+The following are all command line executables specifically for **Mac**. 1. List the current Kubernetes context;
+
+```bash
+ kubectl config get-contexts
+```
+
+or
+
+```bash
+ kubectx
+```
+
+1. Change your Contexts;
+
+ ```bash
+ kubectl config use-contexts
+ ```
+
+ or
+
+ ```bash
+ kubectx docker-for-desktop
+ ```
+
+2. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+3. Verify Kubernetes Dashboard;
+
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+
+4. Start proxy for local UI in new terminal;
+
+ ```bash
+ kubectl proxy ui
+ ```
+
+5. Open URI in default browser
+
+ ```bash
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+
+ Select **Token**. Generate a token to use there by:
+
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+ The token to use is shown on the last line of the output of that command.
+
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+**Ubuntu** continue from here
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster
+
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running
+
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+
+3. Add mojaloop repo to your Helm config \(optional\)
+
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+5. Update helm repositories
+
+ ```bash
+ helm repro update
+ ```
+
+6. Install nginx-ingress for load balancing & external access
+
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+7. Add the following to your /ect/hosts
+
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+8. Test system health in your browser after installation
+
+ ml-api-adapter health test
+
+ \`\`\`http request
+
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+
+ ```text
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+### 2.2 Helm
+
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+**2.2.1 Helm Chart Installation**
+
+This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
+
+1. Lets start by **listing** the current helm charts deployed
+
+ ```bash
+ helm list
+ ```
+
+2. If you would like to **delete** a deployed helm chart
+
+ ```bash
+ helm del --purge moja
+ ```
+
+ **Note:** for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
+
+3. To **install** Mojaloop chart\(s\)
+
+ **Ubuntu** - It might be required to execute `helm install` and `helm upgrade` under `sudo`.
+
+ To install the full mojaloop project
+
+ ```bash
+ helm install --namespace=demo --name=moja mojaloop/mojaloop
+ ```
+
+ Alternative directly from the repository:
+
+ ```bash
+ helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
+ ```
+
+ **or** install a specific mojaloop chart eg. Central-ledger
+
+ ```bash
+ helm install --namespace=demo --name=moja mojaloop/centralledger
+ ```
+
+ Alternative directly from the repository:
+
+ ```bash
+ helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
+ ```
+
+4. To upgrade Mojaloop chart\(s\)
+
+ Note: 'v5.1.1' is an example value.
+
+ ```bash
+ helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
+ ```
+
+5. To upgrade a specific chart eg. Central-ledger
+
+ ```bash
+ helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
+ ```
+
+### 2.3 Postman
+
+Postman is used to send requests and receive responses.
+
+**2.3.1 Installing Postman**
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+Alternatively on **Ubuntu** you may run:
+
+```bash
+wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
+sudo tar -xzf postman.tar.gz -C /opt
+rm postman.tar.gz
+sudo ln -s /opt/Postman/Postman /usr/bin/postman
+```
+
+#### 2.3.1 Setup Postman
+
+* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Open **Postman**
+* Click **Import** and then **Import File**
+* Select the _Mojaloop.postman\_collection.json_ file you downloaded
+* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* Click **Import** and then **Import File**
+* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+* In the imported collection, navigate to the _central\_ledger_ directory
+
+### 2.4 Errors On Setup
+
+* \`central-ledger’s server IP address could not be found.
+
+ ERR\_NAME\_NOT\_RESOLVED\`
+
+ Resolved by:
+
+ * Verify that a helm chart\(s\) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation) section to install a chart.
+
+
+
+
+
+
+
+ Current Version · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
+At of March 6th 2019, the active releases for core central services are as below
+
+helm: v5.2.0
+central-ledger: v5.3.0
+ml-api-adapter: v5.2.1
+central-settlement: v5.2.0
+central-event-processor: v5.3.0
+email-notifier: v5.3.0
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Current Version","level":"1.2.1.1","depth":3,"next":{"title":"Standards","level":"1.2.2","depth":2,"path":"contributors-guide/standards/README.md","ref":"contributors-guide/standards/README.md","articles":[{"title":"Versioning","level":"1.2.2.1","depth":3,"path":"contributors-guide/standards/versioning.md","ref":"contributors-guide/standards/versioning.md","articles":[]},{"title":"Creating new Features","level":"1.2.2.2","depth":3,"path":"contributors-guide/standards/creating-new-features.md","ref":"contributors-guide/standards/creating-new-features.md","articles":[]}]},"previous":{"title":"Mojaloop Deployment","level":"1.2.1","depth":2,"path":"contributors-guide/mojaloop-deployment/README.md","ref":"contributors-guide/mojaloop-deployment/README.md","articles":[{"title":"Current Version","level":"1.2.1.1","depth":3,"path":"contributors-guide/mojaloop-deployment/current-versions.md","ref":"contributors-guide/mojaloop-deployment/current-versions.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/mojaloop-deployment/current-versions.md","mtime":"2019-03-08T16:40:45.168Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+Deployment and Setup Introduction
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+Software List
+Deployment Recommendations
+Local Deployment and Testing Tools
+
+
+Deployment
+Kubernetes
+Kubernetes Installation with Docker
+Kubernetes environment setup
+
+
+Helm
+Helm Chart Installation
+
+
+Postman
+Installing Postman
+Setup Postman
+
+
+
+
+Errors During Setup
+
+1 Software List
+Before proceeding, please have a look at Deployment Recommendations to insure the minimum resource requirements are available.
+1.1 Deployment Recommendations
+This provides environment resource recommendations with a view of the infrastructure architecture.
+Resources Requirements:
+
+Control Plane (i.e. Master Node)
+```http request
+https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components
+```
+
+3x Master Nodes for future node scaling and HA (High Availability)
+
+
+ETCd Plane:
+```http request
+https://coreos.com/etcd/docs/latest/op-guide/hardware.html
+```
+
+3x ETCd nodes for HA (High Availability)
+
+
+Compute Plane (i.e. Worker Node):
+TBC once load testing has been concluded. However the current general *recommended size:
+
+3x Worker nodes, each being:
+4x vCPUs, 16GB of RAM, and 40gb storage
+
+
+
+*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+1.2 Local Deployment and Testing Tools
+1.2 Local Deployment and Testing Tools
+The tool set to be deployed as part of the deployment process.
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Install Info
+
+
+
+
+ Docker
+ Required
+
+ Docker Engine and CLI Client
+ Local Kubernetes single node cluster
+
+ [https://docs.docker.com/install](https://docs.docker.com/install)
+
+
+ Kubectl
+ Required
+
+ Kubernetes CLI for Kubernetes Management
+ Note Docker installs this part of Kubernetes install
+
+
+ [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)
+ Docker Kubernetes Install (as per this guide)
+ Mac: `brew install kubernetes-cli`
+ Ubuntu: `sudo snap install kubectl --classic`
+
+
+
+ Kubectx
+ Optional(useful tool)
+
+ Kubernetes CLI for Kubernetes Context Management Helper
+ Note Docker installs this as part of Kubernetes install
+
+
+ [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
+ Mac: `brew install kubectx`
+ Ubuntu: `sudo apt install kubectx`
+
+
+
+ Kubetail
+ Optional(useful tool)
+
+ Bash script that enables you to aggregate (tail/follow) logs from multiple
+ pods into one stream. This is the same as running `kubectl logs -f` but
+ for multiple pods.
+ Example usage `kubetail moja.* -n demo`
+
+ https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+
+ Helm helps you manage Kubernetes applications
+ Helm charts help you define, install and upgrade even the most complex
+ Kubernetes application
+
+
+ [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
+ Mac: `brew install kubernetes-helm`
+ Ubuntu: `sudo snap install helm --classic`
+
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's.
+ It presents you with a friendly GUI for the construction requests and reading
+ responces.
+ [https://www.getpostman.com/apps](https://www.getpostman.com/apps)
+
+
+## 2 Deployment
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+2.1 Kubernetes
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. Kubernetes Concepts is a good place to start and will provide an overview.
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+Deployment
+Pod
+ReplicaSets
+Service
+Ingress
+StatefulSet
+DaemonSet
+Ingress Controller
+ConfigMap
+Secret
+
+2.1.1 Kubernetes Installation with Docker
+Ubuntu
+Note - Kubernetes with Docker is currently not available on Linux(Ubuntu) - please refer to; https://forums.docker.com/
+We recommend installing a minikube local environment by follow the steps below;
+With reference to https://kubernetes.io/docs/tasks/tools/install-minikube/
+
+VT-x or AMD-v virtualization must be enabled in your computer’s BIOS. To check this on Linux run the following and verify the output is non-empty:
+egrep --color 'vmx|svm' /proc/cpuinfo
+
+
+Install a Hypervisor:
+
+KVM - Recommended Linux driver
+
+or
+
+VirtualBox
+
+
+kubectl should already be installed. To verify, check the version;
+kubectl version
+
+If an error is returned, please refer to Local Deployment and Testing Tools.
+
+minikube installation
+curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
+
+
+Start a cluster by running:
+Note - if you have install KVM as the Hypervisor, you might need to include --vm-driver=KVM in the startup command. The default is to startup with VirtualBox.
+minikube start
+
+Once successfully started, you can interact with your cluster using kubectl, just like any other Kubernetes cluster.
+
+Lunching the Minikube Dashboard
+The minikube dashboard can be opened and access via your default browser.
+minikube dashboard
+
+Continue from the Config Helm CLI and install Helm Tiller... section below.
+
+
+Mac
+To install Kubernetes with Docker, follow the steps below;
+
+Click on the Docker icon on the status barr
+Select Preferences
+Go to Advanced
+Increase the CPU allocation to at least 4
+Increase the Memory allocation to at least 8.0 GiB
+
+
+
+
+
+
+
+Go to Kubernetes
+Select Enable Kubernetes tick box
+Make sure Kubernetes is selected
+Click Apply
+Click Install on the confirmation tab.
+The option is available to wait for completion or run as a background task.
+
+
+
+
+2.1.2 Kubernetes environment setup:
+The following are all command line executables specifically for Mac. 1. List the current Kubernetes context;
+ kubectl config get-contexts
+
+or
+ kubectx
+
+
+Change your Contexts;
+kubectl config use-contexts
+
+or
+kubectx docker-for-desktop
+
+
+Install Kubernetes Dashboard roles, services & deployment. (Alternative install for Dashboard using Helm: kubernetes-dashboard)
+IMPORTANT: Always verify current kubernetes-dashboard yaml file for the below create command.
+kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+
+
+Verify Kubernetes Dashboard;
+kubectl get pod --namespace=kube-system |grep dashboard
+
+
+Start proxy for local UI in new terminal;
+kubectl proxy ui
+
+
+Open URI in default browser
+http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+
+Select Token. Generate a token to use there by:
+kubectl -n kube-system get secrets | grep dashboard-token
+
+The token to use is shown on the last line of the output of that command.
+kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+
+The {kubernetes-dashboard-token-btbwf} is retrieved from the output in the previous step. For more information on generating the token, follow the Authentication link in the window.
+
+
+
+Ubuntu continue from here
+
+Config Helm CLI and install Helm Tiller on K8s cluster
+helm init
+
+
+Validate Helm Tiller is up and running
+kubectl -n kube-system get po | grep tiller
+
+
+Add mojaloop repo to your Helm config (optional)
+helm repo add mojaloop http://mojaloop.io/helm/repo/
+
+
+Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+
+
+Update helm repositories
+helm repro update
+
+
+Install nginx-ingress for load balancing & external access
+helm --namespace kube-public install stable/nginx-ingress
+
+
+Add the following to your /ect/hosts
+127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+
+
+Test system health in your browser after installation
+ml-api-adapter health test
+```http request
+http://ml-api-adapter/health
+___
+central-ledger health test
+```http request
+http://central-ledger/health
+
+
+
+2.2 Helm
+Please review Mojaloop Helm Chart to understand the relationships between the deployed Mojaloop helm charts.
+2.2.1 Helm Chart Installation
+This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see Helm Chart Deployment
+
+Lets start by listing the current helm charts deployed
+helm list
+
+
+If you would like to delete a deployed helm chart
+helm del --purge moja
+
+Note: for demo purposes we are using moja as the chart name. Please verify and use the correct chart name from the listing above.
+
+To install Mojaloop chart(s)
+Ubuntu - It might be required to execute helm install and helm upgrade under sudo.
+To install the full mojaloop project
+helm install --namespace=demo --name=moja mojaloop/mojaloop
+
+Alternative directly from the repository:
+helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
+
+or install a specific mojaloop chart eg. Central-ledger
+helm install --namespace=demo --name=moja mojaloop/centralledger
+
+Alternative directly from the repository:
+helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
+
+
+To upgrade Mojaloop chart(s)
+Note: 'v5.1.1' is an example value.
+helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
+
+
+To upgrade a specific chart eg. Central-ledger
+helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
+
+
+
+2.3 Postman
+Postman is used to send requests and receive responses.
+2.3.1 Installing Postman
+Please, follow these instructions: Get Postman
+Alternatively on Ubuntu you may run:
+wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
+sudo tar -xzf postman.tar.gz -C /opt
+rm postman.tar.gz
+sudo ln -s /opt/Postman/Postman /usr/bin/postman
+
+2.3.1 Setup Postman
+
+Download this file https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json
+Open Postman
+Click Import and then Import File
+Select the Mojaloop.postman_collection.json file you downloaded
+You'll now need to import environment variables. For local testing, download this file https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json
+Click Import and then Import File
+Select the MojaloopLocal.postman_environment.json file you downloaded
+In the imported collection, navigate to the central_ledger directory
+
+2.4 Errors On Setup
+
+`central-ledger’s server IP address could not be found.
+ERR_NAME_NOT_RESOLVED`
+Resolved by:
+
+Verify that a helm chart(s) was installed by executing
+helm list
+
+If the helm charts are not listed, see the Helm Chart Installation section to install a chart.
+
+
+
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Mojaloop Deployment","level":"1.2.1","depth":2,"next":{"title":"Current Version","level":"1.2.1.1","depth":3,"path":"contributors-guide/mojaloop-deployment/current-versions.md","ref":"contributors-guide/mojaloop-deployment/current-versions.md","articles":[]},"previous":{"title":"Contributors Guide","level":"1.2","depth":1,"path":"contributors-guide/README.md","ref":"contributors-guide/README.md","articles":[{"title":"Mojaloop Deployment","level":"1.2.1","depth":2,"path":"contributors-guide/mojaloop-deployment/README.md","ref":"contributors-guide/mojaloop-deployment/README.md","articles":[{"title":"Current Version","level":"1.2.1.1","depth":3,"path":"contributors-guide/mojaloop-deployment/current-versions.md","ref":"contributors-guide/mojaloop-deployment/current-versions.md","articles":[]}]},{"title":"Standards","level":"1.2.2","depth":2,"path":"contributors-guide/standards/README.md","ref":"contributors-guide/standards/README.md","articles":[{"title":"Versioning","level":"1.2.2.1","depth":3,"path":"contributors-guide/standards/versioning.md","ref":"contributors-guide/standards/versioning.md","articles":[]},{"title":"Creating new Features","level":"1.2.2.2","depth":3,"path":"contributors-guide/standards/creating-new-features.md","ref":"contributors-guide/standards/creating-new-features.md","articles":[]}]},{"title":"Tools and Technologies","level":"1.2.3","depth":2,"path":"contributors-guide/tools-and-technologies/README.md","ref":"contributors-guide/tools-and-technologies/README.md","articles":[{"title":"Pragmatic REST","level":"1.2.3.1","depth":3,"path":"contributors-guide/tools-and-technologies/pragmatic-rest.md","ref":"contributors-guide/tools-and-technologies/pragmatic-rest.md","articles":[]},{"title":"Code Quality Metrics","level":"1.2.3.2","depth":3,"path":"contributors-guide/tools-and-technologies/code-quality-metrics.md","ref":"contributors-guide/tools-and-technologies/code-quality-metrics.md","articles":[]},{"title":"Automated Testing","level":"1.2.3.3","depth":3,"path":"contributors-guide/tools-and-technologies/automated-testing.md","ref":"contributors-guide/tools-and-technologies/automated-testing.md","articles":[]}]},{"title":"Documentation","level":"1.2.4","depth":2,"path":"contributors-guide/documentation/README.md","ref":"contributors-guide/documentation/README.md","articles":[{"title":"API Documentation","level":"1.2.4.1","depth":3,"path":"contributors-guide/documentation/api-documentation.md","ref":"contributors-guide/documentation/api-documentation.md","articles":[]},{"title":"Documentation Style Guide","level":"1.2.4.2","depth":3,"path":"contributors-guide/documentation/documentation-style-guide.md","ref":"contributors-guide/documentation/documentation-style-guide.md","articles":[]}]},{"title":"Frequently Asked Questions","level":"1.2.5","depth":2,"path":"contributors-guide/frequently-asked-questions.md","ref":"contributors-guide/frequently-asked-questions.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/mojaloop-deployment/README.md","mtime":"2019-03-11T10:10:05.163Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Standards
+
+## Standards for adopting an Open Source contribution into Mojaloop
+
+This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
+
+### Prerequisites
+
+1. The contribution should be in-line with the LevelOne Principles
+2. Basic guidelines regarding status of the contribution \(Code-base / Standards / Designs / Specifications\)
+3. Basic documentation to get started
+
+### Guidelines regarding adoption
+
+1. Create a private repo on the Mojaloop GitHub organization
+2. Have a sub-team of the DA take a look to make sure its portable \(to OSS\) - aligns with L1P principles, etc, and ensure design is in line with standards
+3. Check Licensing
+4. Assess Performance impact
+5. Create action items \(stories\) to update naming, remove/sanitize any items that are not generic
+6. Configuration for 'modes of operation'
+7. Enable CI/CD pipeline
+
+# Creating new Features
+
+## Fork
+
+Fork the Mojaloop repository into your own personal space. Ensure that you keep the `master` branch in sync.
+
+Refer to the following documentation for more information: [https://help.github.com/articles/fork-a-repo/](https://help.github.com/articles/fork-a-repo/)
+
+1. Clone repo using Git Fork button \(refer to the above documentation for more information\)
+2. Clone your forked repo: `git clone https://github.com//.git`
+3. Synchronise your forked repo with Mojaloop
+
+ Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
+
+ You should now see that you have two remotes:
+
+ ```bash
+ git remote -v
+ origin https://github.com//.git (fetch)
+ origin https://github.com//.git (push)
+ mojaloop https://github.com/mojaloop/.git (fetch)
+ mojaloop https://github.com/mojaloop/.git (push)
+ ```
+
+4. To sync to your current branch: `git pull mojaloop ` This will merge any changes from Mojaloop's repo into your forked repo.
+5. Push the changes back to your remote fork: `git push origin `
+
+## Creating a Branch
+
+Create a new branch from the `master` branch with the following format: `/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
+
+1. Create and checkout the branch: `git checkout -b /`
+2. Push the branch to your remote: `git push origin /`
+
+Where `` can be one of the following:
+
+| branchType | Description |
+| :--- | :--- |
+| feature | Any new or maintenance features that are in active development. |
+| hotfix | A hotfix branch is for any urgent fixes. |
+| release | A release branch containing a snapshot of a release. |
+| backup | A temporary backup branch. Used normally during repo maintenance. |
+
+## Merge into Mojaloop Repo
+
+Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
+
+# Versioning of releases made for core Switch services
+
+This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
+
+### [Versioning Strategy](standards.md#versioning-strategy)
+
+### [Current versions](standards.md#current-version)
+
+### [Notes](standards.md#notes)
+
+## Versioning Strategy
+
+1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
+2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
+3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
+
+## Notes
+
+1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
+2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+## Pull Request Process
+
+It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
+
+## Code of conduct
+
+We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
+
+## Licensing
+
+See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+
+
+
+
+
+
+
+ Creating new Features · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+Fork
+Fork the Mojaloop repository into your own personal space. Ensure that you keep the master branch in sync.
+Refer to the following documentation for more information: https://help.github.com/articles/fork-a-repo/
+
+Clone repo using Git Fork button (refer to the above documentation for more information)
+Clone your forked repo: git clone https://github.com/<your_username>/<forked_repo>.git
+Synchronise your forked repo with Mojaloop
+Add a new upstream repo for Mojaloop $ git remote add mojaloop https://github.com/mojaloop/<original_repo>.git
+You should now see that you have two remotes:
+ git remote -v
+ origin https://github.com/<your_username>/<forked_repo>.git (fetch)
+ origin https://github.com/<your_username>/<forked_repo>.git (push)
+ mojaloop https://github.com/mojaloop/<original_repo>.git (fetch)
+ mojaloop https://github.com/mojaloop/<original_repo>.git (push)
+
+
+To sync to your current branch: git pull mojaloop <current_branch> This will merge any changes from Mojaloop's repo into your forked repo.
+
+Push the changes back to your remote fork: git push origin <current_branch>
+
+Creating a Branch
+Create a new branch from the master branch with the following format: <branchType>/<issue#><issueDescription> where issue# can be attained from the Github issue, and the issueDescription is the formatted in CamelCase.
+
+Create and checkout the branch: git checkout -b <branchType>/<issue#><issueDescription>
+Push the branch to your remote: git push origin <branchType>/<issue#><issueDescription>
+
+Where <branchType> can be one of the following:
+
+
+
+branchType
+Description
+
+
+
+
+feature
+Any new or maintenance features that are in active development.
+
+
+hotfix
+A hotfix branch is for any urgent fixes.
+
+
+release
+A release branch containing a snapshot of a release.
+
+
+backup
+A temporary backup branch. Used normally during repo maintenance.
+
+
+
+Merge into Mojaloop Repo
+Once the feature is completed create a PR from your Feature Branch into the master branch on the Mojaloop repository (not your personal repo) for approval, and check validations (e.g. unit tests, code coverage, etc executed via CircieCI).
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Creating new Features","level":"1.2.2.2","depth":3,"next":{"title":"Tools and Technologies","level":"1.2.3","depth":2,"path":"contributors-guide/tools-and-technologies/README.md","ref":"contributors-guide/tools-and-technologies/README.md","articles":[{"title":"Pragmatic REST","level":"1.2.3.1","depth":3,"path":"contributors-guide/tools-and-technologies/pragmatic-rest.md","ref":"contributors-guide/tools-and-technologies/pragmatic-rest.md","articles":[]},{"title":"Code Quality Metrics","level":"1.2.3.2","depth":3,"path":"contributors-guide/tools-and-technologies/code-quality-metrics.md","ref":"contributors-guide/tools-and-technologies/code-quality-metrics.md","articles":[]},{"title":"Automated Testing","level":"1.2.3.3","depth":3,"path":"contributors-guide/tools-and-technologies/automated-testing.md","ref":"contributors-guide/tools-and-technologies/automated-testing.md","articles":[]}]},"previous":{"title":"Versioning","level":"1.2.2.1","depth":3,"path":"contributors-guide/standards/versioning.md","ref":"contributors-guide/standards/versioning.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/standards/creating-new-features.md","mtime":"2019-03-08T16:40:45.168Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+Standards
+Standards for adopting an Open Source contribution into Mojaloop
+This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
+Prerequisites
+
+The contribution should be in-line with the LevelOne Principles
+Basic guidelines regarding status of the contribution (Code-base / Standards / Designs / Specifications)
+Basic documentation to get started
+
+Guidelines regarding adoption
+
+Create a private repo on the Mojaloop GitHub organization
+Have a sub-team of the DA take a look to make sure its portable (to OSS) - aligns with L1P principles, etc, and ensure design is in line with standards
+Check Licensing
+Assess Performance impact
+Create action items (stories) to update naming, remove/sanitize any items that are not generic
+Configuration for 'modes of operation'
+Enable CI/CD pipeline
+
+Versioning
+Review the information on versioning for Mojaloop.
+Creating new Features
+Process for creating new features and branches in Mojaloop.
+Pull Request Process
+It's a good idea to ask about major changes on Slack. Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the Level One Principles
+Code of conduct
+We use a standard developer code of conduct
+Licensing
+See License policy
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Standards","level":"1.2.2","depth":2,"next":{"title":"Versioning","level":"1.2.2.1","depth":3,"path":"contributors-guide/standards/versioning.md","ref":"contributors-guide/standards/versioning.md","articles":[]},"previous":{"title":"Current Version","level":"1.2.1.1","depth":3,"path":"contributors-guide/mojaloop-deployment/current-versions.md","ref":"contributors-guide/mojaloop-deployment/current-versions.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/standards/README.md","mtime":"2019-03-08T16:40:45.168Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+Versioning of releases made for core Switch services
+This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
+Versioning Strategy
+
+The current versioning system is inspired by the Semantic Versioning numbering system for releases.
+However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment (PI) and Sprint numbers
+For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 (of PI-4)
+
+Current Version
+The currrent version information for Mojaloop can be found here.
+Notes
+
+A new release for helm repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made (features, bug-fixes).
+However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Versioning","level":"1.2.2.1","depth":3,"next":{"title":"Creating new Features","level":"1.2.2.2","depth":3,"path":"contributors-guide/standards/creating-new-features.md","ref":"contributors-guide/standards/creating-new-features.md","articles":[]},"previous":{"title":"Standards","level":"1.2.2","depth":2,"path":"contributors-guide/standards/README.md","ref":"contributors-guide/standards/README.md","articles":[{"title":"Versioning","level":"1.2.2.1","depth":3,"path":"contributors-guide/standards/versioning.md","ref":"contributors-guide/standards/versioning.md","articles":[]},{"title":"Creating new Features","level":"1.2.2.2","depth":3,"path":"contributors-guide/standards/creating-new-features.md","ref":"contributors-guide/standards/creating-new-features.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/standards/versioning.md","mtime":"2019-03-08T16:40:45.169Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+The page describes our automated testing philosophy along with the regression testing framework.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Automated Testing","level":"1.2.3.3","depth":3,"next":{"title":"Documentation","level":"1.2.4","depth":2,"path":"contributors-guide/documentation/README.md","ref":"contributors-guide/documentation/README.md","articles":[{"title":"API Documentation","level":"1.2.4.1","depth":3,"path":"contributors-guide/documentation/api-documentation.md","ref":"contributors-guide/documentation/api-documentation.md","articles":[]},{"title":"Documentation Style Guide","level":"1.2.4.2","depth":3,"path":"contributors-guide/documentation/documentation-style-guide.md","ref":"contributors-guide/documentation/documentation-style-guide.md","articles":[]}]},"previous":{"title":"Code Quality Metrics","level":"1.2.3.2","depth":3,"path":"contributors-guide/tools-and-technologies/code-quality-metrics.md","ref":"contributors-guide/tools-and-technologies/code-quality-metrics.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/tools-and-technologies/automated-testing.md","mtime":"2019-03-05T16:37:38.684Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+Functional quality metrics
+Unit test metrics
+High coverage and low dependencies show that the code is testable and therefore well isolated and easy to maintain. Low complexity also makes code readable and maintainable and helps enforce single responsibility. Real unit tests run very fast as they don't call external components.
+
+
+
+Code Quality Metrics
+New and Project Code
+
+
+
+
+Unit test coverage
+>= 80% block coverage
+
+
+Unit test speed
+<= 10 seconds
+
+
+Dependencies/method
+<= 10
+
+
+Complexity/method
+<= 7
+
+
+
+Component
+Functional testing typically covers pair combinations of the system states.
+Integration
+Functional tests have one test per message and error. Messages and errors that are handled the same way use the same test.
+Contract
+Limited to what the consuming teams need that isn't covered by existing unit, component, and integration tests. Often added to over time.
+End to End
+End to end tests cover acceptance tests from scenarios.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Code Quality Metrics","level":"1.2.3.2","depth":3,"next":{"title":"Automated Testing","level":"1.2.3.3","depth":3,"path":"contributors-guide/tools-and-technologies/automated-testing.md","ref":"contributors-guide/tools-and-technologies/automated-testing.md","articles":[]},"previous":{"title":"Pragmatic REST","level":"1.2.3.1","depth":3,"path":"contributors-guide/tools-and-technologies/pragmatic-rest.md","ref":"contributors-guide/tools-and-technologies/pragmatic-rest.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/tools-and-technologies/code-quality-metrics.md","mtime":"2019-03-08T16:40:45.171Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+Here we document the reasoning behind certain tools, technology and process choices for Mojaloop. We also have included the recommendation links/versions for each of these tools.
+TOOL CHOICES
+
+API Development
+RAML and Swagger 2.0 is leveraged for API development.
+WSO2 offers an enterprise platform for integrating APIs, applications, and web services—locally and across the Internet. It also provides Mojaloop with a Security Layer, and Development Portal.
+
+
+Circle-CI - This tool is used for continuous build and continuous deployment. We needed an online continuous build and testing system that can work with many small projects and a distributed team. Jenkins was considered, but it requires hosting a server and a lot of configuration. CircleCI allowed for a no host solution that could be started with no cost and very limited configuration. We thought we might start with CircleCI and move off later if we outgrew it, but that hasn’t been needed.
+Dactyl – We need to be able to print the online documentation. While it’s possible to print markdown files directly one at a time, we’d like to put the files into set of final PDF documents, where one page might end up in more than one final manual. Dactyl is a maintained open source conversion tool that converts between markdown and PDF. We originally tried Pandoc, but it had bugs with converting tables. Dactyl fixes that and is much more flexible.
+DBeaver - DBeaver is a free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports all popular databases: MySQL, PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Derby, etc.
+Docker - The Docker container engine creates and runs the Docker container from the Docker image file.
+Docker hub is used to link, build, test and push the Mojaloop code repositories. We needed to support both local and cloud execution. We have many small microservices that have very simple specific configurations and requirements. The easiest way to guarantee that the service works the same way in every environment from local development, to cloud, to hosted production is to put each microservice in a Docker container along with all the prerequisites it needs to run. The container becomes a secure, closed, pre-configured, runnable unit.
+Draw.io – We need to create pictures for our documents and architecture diagrams using an (ideally free) open source friendly tool, that is platform agnostic, supports vector and raster formats, allows WYSIWYG drawing, works with markdown, and is easy to use. We looked at many tools including: Visio, Mermaid, PlantUML, Sketchboard.io, LucidChart, Cacoo, Archi, and Google Drawings. Draw.io scored at the top for our needs. It’s free, maintained, easy to use, produces our formats, integrates with DropBox and GitHub, and platform agnostic. In order to save our diagrams, we have to save two copies – one in SVG (scalable vector) format and the other in PNG (raster). We use the PNG format within the docs since it can be viewed directly in GitHub. The SVG is used as the master copy as it is editable.
+ESLint - Within JavaScript code, we use ESLint as a code style guide and style enforcement tool.
+GitHub – GitHub is a widely-used source code repository service, based on git, the standard source code version control system for open source projects. So the decision to use GitHub was straightforward. We create a story every time for integration work. Create bugs for any issues. Ensure all stories are tracked throughout the pipeline to ensure reliable metrics.
+Helm - The Helm package manager for Kubernetes provides templatized deployments and configurations and allow for overall complexity management.
+Kafka - This technology is leveraged to support Mojaloop’s demand for a high velocity and high volume data messaging but keep our hardware requirements minimum.
+JavaScript - The Mojaloop application is primarily written in JavaScript.
+Kubectl - This is a command line interface for running commands against Kubernetes clusters.
+Kubernetes - This enterprise tool provides an extraction layer, infrastructure management and a container-orchestration system.
+Markdown – Documentation is a deliverable for this project, just like the code, and so we want to treat it like the code in terms of versioning, review, check in, and tracking changes. We also want the documentation to be easily viewable online without constantly opening a viewer. GitHub has a built-in format called Markdown which solves this well. The same files work for the Wiki and the documents. They can be reviewed with the check in using the same tools and viewed directly in GitHub. We considered Google Docs, Word and PDF, but these binary formats aren’t easily diff-able. A disadvantage is that markdown only allows simple formatting – no complex tables or font changes - but this should be fine when our main purpose is clarity.
+MySQLWorkbench – MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. MySQL Workbench is available on Windows, Linux and Mac OS X.
+NodeJS - This development tool is a JavaScript runtime built on Chrome's V8 JavaScript engine that runs Mojaloop. NodeJS is designed to create simple microservices and it has a huge set of open source libraries available. Node performance is fine and while Node components don’t scale vertically a great deal, but we plan to scale horizontally, which it does fine. The original Interledger code was written in NodeJS as was the level one prototype. Most teams used Node already, so this made sense as a language. Within NodeJS code, we use Standard as a code style guide and to enforce code style.
+NPM - NPM is the package manager for Mojaloop since JavaScript is the default programming language.
+Percona for MySQL - These tools are leveraged as a relational database management system to ensure high performance and enterprise-grade functionality for the Mojaloop system. We needed a SQL backend that is open source friendly and can scale in a production environment. Thus, we chose MySQL, an open-source relational database management system.
+Postman is a Google Chrome application for interacting with HTTP APIs. It presents you with a friendly GUI for constructing requests and reading responses.
+Rancher 2.0 - The Infrastructure management, provisioning and monitoring is provided by Rancher 2.0 which is an enterprise Kubernetes platform that manage Kubernetes deployments, clusters, on cloud & on-prem. Rancher makes it easy for DevOps teams to test, deploy and manage the Mojaloop system no matter where it is running.
+Slack – Slack is used for internal team communication. This was largely picked because several team already used it and liked it as a lightweight approach compared to email.
+SonarQube – We need an online dashboard of code quality (size, complexity, issues, and coverage) that can aggregate the code from all the repos. We looked at several online services (CodeCov, Coveralls, and Code Climate), but most couldn’t do complexity or even number of lines of code. Code Climate has limited complexity (through ESLint), but costs 6.67/seat/month. SonarQube is free, though it required us to setup and maintain our own server. It gave the P1 features we wanted.
+SourceTree – Sourcetree simplifies how you interact with your Git repositories so you can focus on coding. Visualize and manage your repositories through Sourcetree's simple Git GUI.
+Stories On Board - We use Stories on Board to help capture our high level Epics at a portfolio level before they are commmitted and moved to Github. Our Story Board for Mojaloop is located here
+Visual Studio Code - Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
+ZenHub – We needed a project management solution that was very light weight and cloud based to support distributed teams. It had to support epics, stories, and bugs and a basic project board. VS and Jira online offerings were both considered. For a small distributed development team an online service was better. For an open source project, we didn’t want ongoing maintenance costs of a server. Direct and strong GitHub integration was important. It was very useful to track work for each microservice with that microservice. Jira and VS both have more overhead than necessary for a project this size and don’t integrate as cleanly with GitHub as we’d want. ZenHub allowed us to start work immediately. A disadvantage is the lack of support for cumulative flow diagrams and support for tracking # of stories instead of points, so we do these manually with a spreadsheet updated daily and the results published to the "Project Management" Slack channel.
+
+TECHNOLOGY CHOICES
+
+Agile development - This methodology is used to track and run the project. The requirements need to be refined as the project is developed, therefore we picked agile development over waterfall or lean.
+APIs - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our Pragmatic REST design pattern. APIs will be defined using OpenAPI or RAML. Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
+Automated Testing - For the most part, most testing will be automated to allow for easy regression. See the automated testing strategy and code quality metrics for standards.
+Hosting - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.
+Interledger – Mojaloop needed a lightweight, open, and secure transport protocol for funds. Interledger.org provides all that. It also provides the ability to connect to other systems. We also considered block chain systems, but block chain systems send very large messages which will be harder to guarantee delivery of in third world infrastructure. Also, while blockchain systems provide good anonymity, that is not a project goal. To enable fraud detection, regulatory authorities need to be able to request records of transfers by account and person.
+Open source - The entire project has been released as open source in accordance with the Level One Project principles. All tools and processes must be open source friendly and support projects that use an Apache 2.0 license with no restrictive licenses requirements on developers.
+Operating System – Microsoft Windows is widely used in many target countries, but we need an operating system that is free of license fees and is open source compatible. We are using Linux. We don’t have a dependency on the particular flavor, but are using the basic Amazon Linux. In the Docker containers, Alpine Linux is used.
+Microservices - Because the architecture needs to easily deploy, scale, and have components be easily replaced or upgraded, it will be built as a set of microservices.
+Scaled Agile Framework - There were four initial development teams that are geographically separate. To keep the initial phase of the project on track, the scaled agile framework (SAFe) was picked. This means work is divided into program increments (PI) that are typically four 2 week sprints long. As with the sprints, the PI has demo-able objective goals defined in each PI meeting.
+Services - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
+Threat Modeling, Resilience Modeling, and Health Modeling - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it.
+USSD - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider (DFSP).
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Tools and Technologies","level":"1.2.3","depth":2,"next":{"title":"Pragmatic REST","level":"1.2.3.1","depth":3,"path":"contributors-guide/tools-and-technologies/pragmatic-rest.md","ref":"contributors-guide/tools-and-technologies/pragmatic-rest.md","articles":[]},"previous":{"title":"Creating new Features","level":"1.2.2.2","depth":3,"path":"contributors-guide/standards/creating-new-features.md","ref":"contributors-guide/standards/creating-new-features.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/tools-and-technologies/README.md","mtime":"2019-03-08T16:40:45.170Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+Pragmatic REST For the Mojaloop Project
+With the emergence of API strategy as a scaling tool for Internet service businesses, the focus on interconnect technology has shifted. Building on the principles that enabled the Web to form and scale, REST (Representational State Transfer) has become a design preference for Internet service APIs. But while the REST principles, proposed in Roy Fielding's dissertation that defined them, have academic value as a basis for research, a pure REST design is not at present practical for most applications. We are advocating a kind of Pragmatic REST-a design pattern that adopts the beneficial components of RESTful design without requiring strict adherence to academic purity.
+The Richardson Maturity Model
+Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and explained at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
+
+Martin Fowler, referencing Rest in Practice,2 summarizes the genesis of RESTful design:
+
+use Restful web services to handle many of the integration problems that enterprises face. At its heart . . . is the notion that the web is an existence proof of a massively scalable distributed system that works really well, and we can take ideas from that to build integrated systems more easily.
+
+A pragmatic approach to RESTful design uses the best parts of Fielding's conceptual framework to allow developers and integrators to understand what they can do with the API as rapidly as possible and without writing extraneous code.
+At its most fundamental, a RESTful design is resource-centric and uses HTTP verbs. At its most advanced, a design that follows pure academic REST utilizes the HATEOAS principle by implementing Hypermedia Controls. We are advocating a Level 2 RESTful design for Mojaloop.
+Why not Hypermedia Controls?
+Although HATEOAS is a fascinating principle-it advocates that a server should respond to each client action with a list of all possible actions that can lead the client to its next application state. And further, clients must not rely on out of band information (like a written API spec) for what actions can be performed on which resources or on the format of URIs.
+It is this final proscription that fails the test of Pragmatic REST: While HATEOAS is an interesting theoretical approach to limit coupling, it does not easily apply to Mojaloop (or any other contract API design). When we take into account our audience for the interconnect APIs, we find a group of commercial entities that will be operating under a set of highly specific scheme rules. Interactions between the participants, and between participant and central service hub, will be highly specified to assign acceptable commercial risk that can be priced at very low cost to end-users. This requires ex-ante predictability of the API which is anathema to the HATEOAS principle defined by Fielding.
+Pragmatic RESTful Principles
+URIs Define Resources
+A well-designed URI pattern makes an API easy to consume, discover, and extend, just as a carefully designed API does in a traditional programming language. Pure REST disdains this principle in favor of HATEOAS. But pragmatic REST follows a normal pattern for URI definitions to improve human understanding, even if HATEOAS principles are employed for discovery.
+URI paths that refer to a collection of objects should consist of a plural noun, e.g. /customers, to refer to a set of customers. When a collection can have only one instance, the singular noun should be used to avoid confusion. E.g. GET /transfers/:id/fulfillment is correct, since there is only one fulfillment object per identified transfer.
+URI paths that refer to a single object should consist of a plural noun (representing the collection), followed by a predefined unique identifier. E.g., /customers/123456 to refer to the specific customer with number 123456. The identifier must be unique within the containing collection and persist for the life of the object within that collection. IDs must not be ordinal values-ordinal retrieval of objects from a collection is possible using query parameters on the collection URI.
+URI paths may have a prefix to identify the environment, version, or other context of the resource. Nothing should follow the identifying path but collections and object references.
+URI path and query segment identifiers should be chosen from the Roman character set, [0-9A-Za-z]. Use camelCase to define the elements of the URI path. Do not use snake_case.
+For the avoidance of doubt, "_" (underscore) and "-" (hyphen) should not be used in URI path or query segment identifiers.
+This probably seems a bit parochial. The purpose is to find a well-defined URI format that is consistent with wide-spread practice, easy to define, predictable, and that maps to native environments and conventions. It isn't going to satisfy everyone. Here is reasoning behind this constraint:
+CapitalCase and camelCase are the defacto standard for NodeJS and JavaScript and are a common constraint in URI definition: URI path segments are often mapped to JS internal resources and so conforming to JS naming conventions makes sense.
+Field names in JSON and SQL should also follow this convention since they are often automatically mapped into variable name space and can be referenced in URIs as path or query segment identifiers.
+We should also avoid the use of "$" unless it is required by a library (e.g. JQuery). IBM JCL has passed away; let it rest in peace. There are better scope control tools to separate name spaces than introducing non-roman symbols.
+We should avoid "-" (hyphen) in path segment and query parameter names as it does not map into variable names, SQL, or JSON field name identifiers.
+Underscore characters must be escaped in markdown source by prefixing each with a "\" character.
+Snake_case has been reported to be slightly easier to read than camelCase in variable names, but it actually does not improve readability of URIs, as it visually interferes with path and query segment delimiters making it difficult to visually parse them. And when URIs are underlined in presentation, the underscores become illegible.
+URI Parameters
+Use a standard and predictable set of optional parameters in a consistent way.
+A set of standard query parameters should be used for collections to enable caller control over how much of the collection they see. E.g. "count" to determine how many objects to return, "start" to determine where to start counting in the result set, and "q" as a generic free-form search query. We will define the standard set of parameters as we go and will apply them consistently.
+Verbs
+Singular objects should support GET for read, PUT for complete replacement (or creation when the primary key is specified by the client and is persistent, e.g. a payment card PAN), and DELETE for delete.
+Collections should support GET to read back the whole or part of a collection, and POST to add a new object to the collection.
+Singular objects may support POST as a way to change their state in specified ways. Posting a JSON document to a singular object URI may allow selected field values to be updated or trigger a state change or action without replacing the whole object.
+GET must be implemented in a nullipotent manner-that is, GET never causes side effects and never modifies client-visible system state (other than logging events or updating instrumentation, e.g.).
+PUT and DELETE must be implemented in an idempotent manner-that is, changes are applied consistently to the system data in a way that is dependent only on the state of the resource and inputs but on nothing else. The action has no additional effect if it is executed more than once with the same input parameters and does not depend on the order of other operations on a containing collection or other resources held in the collection. For example, removing a resource from a collection can be considered an idempotent operation on the collection. Using PUT to fully replace (or create) a uniquely identified resource when the URI is fully known to the client is also idempotent. This implies that the system may reorder operations to improve efficiency, and the client does not need to know whether a resource exists before attempting to replace it.
+POST and PATCH3 are not idempotent operations. POST is used to create new resources where the resource identifier is assigned by the server or where a single identified internal resource is implied by the target URI (e.g. POST /transfers, but PUT /transfers/:id/fulfillment).
+Data Format
+We favor JSON4 related data formats over XML. In some cases, data formats will be binary or XML, as defined by pre-existing standards, and these will be precisely specified. Binary formats should have a formal syntax to avoid ambiguous representational translations (e.g. character set translations, big- or little-endian representations of numeric values, etc).
+Date and time values used in APIs should comply to the ISO 8601 standard, and further profiled by the w3c Note on Date and Time Formats.5 This w3c note should lead to the reduction in complexity and error scope of communicating components that must exchange tangible dates and times. There will be cases where we use non-ISO format date or time as required by an external standard, e.g. ISO 7813 expiry dates.
+Existing standard XML formats should have an XSD schema for the acceptable subset profile used within the project. For particularly complex data formats, we may use a common format profile translator to map between our project subset of the standard format and the wire format used by a standardized protocol (e.g.). This will limit coupling to complex formats in a more maintainable way.
+When specifying the PATCH action for a resource, we will use a consistent patch document format (e.g. JSON Patch6).
+Return Codes
+Use HTTP return codes in a consistent way and according to their standard definitions. The standard codes are defined in RFC 2616.7
+Machine Readable Error Format
+The API should provide a machine readable error result in a well-defined JSON format. {TBD whether to use a response envelope and how to format errors, faults, and success envelopes. RESTful design relies on headers to carry protocol-defined errors, debug info can also be carried in headers. We should be clear on why we are using an envelope and how this supports normal production communication between client and server.
+Versioning
+API URIs should include a version identifier in the format vM as a leading path element (where "M" is the Major component of the multi-part version number). The API and its version identifier element must conform to the semantic versioning8 2.0 specification for API versioning.
+A client must specify the Major version number in each request. It is not possible for a client to express a requirement for a specific minor version.
+The full API version number is specified in the response header (TBD) for all successful and error responses.
+While an API version contract will be influenced by Major, minor, and patch levels, only the Major version number is a production API binding element-that is, a production client cannot request a particular minor version or patch level and a production server will not accept a URI request that specifies these extra elements.
+However, in pre-production environments, it is anticipated that some combination of minor, patch, pre-release, and metadata suffixes would be supported in client requests (as defined in semver [3]) and may be expressed in pre-production URIs to assist with development and integration scenarios.
+We May Need to Give REST a Rest
+As we design the interconnection APIs between components and between participating systems, we may find API requirements that don't precisely match the Pragmatic REST pattern defined here. We will evaluate these case-by-case and make the best choice to support the project goals.
+Non-Functional Requirements
+As we develop the APIs, we will make consistent choices about non-functional requirements to reinforce the project goals.
+1: http://martinfowler.com/articles/richardsonMaturityModel.html, retrieved August 18, 2016.
+2: https://www.amazon.com/gp/product/0596805829, retrieved August 18, 2016.
+3: RFC 5789, PATCH Method for HTTP, https://tools.ietf.org/html/rfc5789, retrieved August 18, 2016.
+4: Introducing JSON, http://json.org/, retrieved August 18, 2016.
+5: http://www.w3.org/TR/1998/NOTE-datetime-19980827, retrieved August 22, 2016.
+6: JSON Patch, http://jsonpatch.com/, retrieved August 18, 2016.
+7: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
+8: Semantic Versioning 2.0.0, http://semver.org/, retrieved August 18, 2016.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Pragmatic REST","level":"1.2.3.1","depth":3,"next":{"title":"Code Quality Metrics","level":"1.2.3.2","depth":3,"path":"contributors-guide/tools-and-technologies/code-quality-metrics.md","ref":"contributors-guide/tools-and-technologies/code-quality-metrics.md","articles":[]},"previous":{"title":"Tools and Technologies","level":"1.2.3","depth":2,"path":"contributors-guide/tools-and-technologies/README.md","ref":"contributors-guide/tools-and-technologies/README.md","articles":[{"title":"Pragmatic REST","level":"1.2.3.1","depth":3,"path":"contributors-guide/tools-and-technologies/pragmatic-rest.md","ref":"contributors-guide/tools-and-technologies/pragmatic-rest.md","articles":[]},{"title":"Code Quality Metrics","level":"1.2.3.2","depth":3,"path":"contributors-guide/tools-and-technologies/code-quality-metrics.md","ref":"contributors-guide/tools-and-technologies/code-quality-metrics.md","articles":[]},{"title":"Automated Testing","level":"1.2.3.3","depth":3,"path":"contributors-guide/tools-and-technologies/automated-testing.md","ref":"contributors-guide/tools-and-technologies/automated-testing.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"contributors-guide/tools-and-technologies/pragmatic-rest.md","mtime":"2019-03-08T16:40:38.994Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"../..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
+.back-to-top {
+ position: fixed;
+ bottom: 25px;
+ right: 25px;
+ background: rgba(0, 0, 0, 0.5);
+ width: 50px;
+ height: 50px;
+ display: block;
+ text-decoration: none;
+ -webkit-border-radius: 35px;
+ -moz-border-radius: 35px;
+ border-radius: 35px;
+ display: none;
+}
+.back-to-top i {
+ color: #fff;
+ margin: 0;
+ position: relative;
+ left: 15px;
+ top: 14px;
+ font-size: 22px;
+}
+.back-to-top:hover {
+ background: rgba(0, 0, 0, 0.9);
+ cursor: pointer;
+}
+.book.color-theme-1 .back-to-top {
+ background: rgba(112, 66, 20, 0.5);
+}
+.book.color-theme-1 .back-to-top i {
+ color: #f3eacb;
+}
+.book.color-theme-1 .back-to-top:hover {
+ background: rgba(112, 66, 20, 0.9);
+}
+.book.color-theme-2 .back-to-top {
+ background: rgba(189, 202, 219, 0.5);
+}
+.book.color-theme-2 .back-to-top i {
+ color: #1C1F2B;
+}
+.book.color-theme-2 .back-to-top:hover {
+ background: rgba(189, 202, 219, 0.9);
+}
+
+@media only screen
+ and (min-device-width: 320px)
+ and (max-device-width: 480px)
+ and (-webkit-min-device-pixel-ratio: 2)
+ and (orientation: portrait) {
+ .back-to-top {
+ bottom: 10px;
+ right: 10px;
+ }
+}
\ No newline at end of file
+var gitbook = window.gitbook;
+
+gitbook.events.on('page.change', function() {
+
+ var back_to_top_button = [''].join("");
+ $(".book").append(back_to_top_button)
+
+ $(".back-to-top").hide();
+
+ $('.book-body,.body-inner').on('scroll', function () {
+ if ($(this).scrollTop() > 100) {
+ $('.back-to-top').fadeIn();
+ } else {
+ $('.back-to-top').fadeOut();
+ }
+ });
+
+ $('.back-to-top').click(function () {
+ $('.book-body,.body-inner').animate({
+ scrollTop: 0
+ }, 800);
+ return false;
+ });
+
+});
+.book .book-summary .chapter > .articles {
+ overflow: hidden;
+ max-height: 0px;
+}
+
+.book .book-summary .chapter.expanded > .articles {
+ max-height: 9999px;
+}
+
+.book .book-summary .exc-trigger {
+ position: absolute;
+ left: 12px;
+ top: 12px;
+}
+
+.book .book-summary ul.summary li a,
+.book .book-summary ul.summary li span {
+ padding-left: 30px;
+}
+
+.book .book-summary .exc-trigger:before {
+ content: "\f0da";
+}
+
+.book .book-summary .expanded > a .exc-trigger:before,
+.book .book-summary .expanded > span .exc-trigger:before {
+ content: "\f0d7";
+}
+require(['gitbook', 'jQuery'], function(gitbook, $) {
+ var TOGGLE_CLASSNAME = 'expanded',
+ CHAPTER = '.chapter',
+ ARTICLES = '.articles',
+ TRIGGER_TEMPLATE = '',
+ LS_NAMESPACE = 'expChapters';
+ var init = function () {
+ // adding the trigger element to each ARTICLES parent and binding the event
+ $(ARTICLES)
+ .parent(CHAPTER)
+ .children('a,span')
+ .append(
+ $(TRIGGER_TEMPLATE)
+ .on('click', function(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ toggle($(e.target).closest(CHAPTER));
+ })
+ );
+ expand(lsItem());
+ //expand current selected chapter with it's parents
+ var activeChapter = $(CHAPTER + '.active');
+ expand(activeChapter);
+ expand(activeChapter.parents(CHAPTER));
+
+
+ }
+ var toggle = function ($chapter) {
+ if ($chapter.hasClass('expanded')) {
+ collapse($chapter);
+ } else {
+ expand($chapter);
+ }
+ }
+ var collapse = function ($chapter) {
+ if ($chapter.length && $chapter.hasClass(TOGGLE_CLASSNAME)) {
+ $chapter.removeClass(TOGGLE_CLASSNAME);
+ lsItem($chapter);
+ }
+ }
+ var expand = function ($chapter) {
+ if ($chapter.length && !$chapter.hasClass(TOGGLE_CLASSNAME)) {
+ $chapter.addClass(TOGGLE_CLASSNAME);
+ lsItem($chapter);
+ }
+ }
+ var lsItem = function () {
+ var map = JSON.parse(localStorage.getItem(LS_NAMESPACE)) || {}
+ if (arguments.length) {
+ var $chapters = arguments[0];
+ $chapters.each(function (index, element) {
+ var level = $(this).data('level');
+ var value = $(this).hasClass(TOGGLE_CLASSNAME);
+ map[level] = value;
+ })
+ localStorage.setItem(LS_NAMESPACE, JSON.stringify(map));
+ } else {
+ return $(CHAPTER).map(function(index, element){
+ if (map[$(this).data('level')]) {
+ return this;
+ }
+ })
+ }
+ }
+ gitbook.events.bind('page.change', function() {
+ init()
+ });
+});
+require(["gitbook", "jQuery"], function(gitbook, $) {
+ gitbook.events.bind('start', function (e, config) {
+ var conf = config.editlink
+ var label = conf.label
+ var base = conf.base
+ var multilingual = conf.multilingual || false
+
+ if (base.slice(-1) !== "/") {
+ base += "/"
+ }
+
+ gitbook.toolbar.createButton({
+ icon: 'fa fa-edit',
+ text: label,
+ onClick: function() {
+ var filepath = gitbook.state.filepath
+ var lang = multilingual && $('html').attr('lang') ? $('html').attr('lang') + '/' : ''
+
+ window.open(base + lang + filepath)
+ }
+ })
+ })
+})
\ No newline at end of file
+require(['gitbook', 'jquery'], function(gitbook, $) {
+ // Configuration
+ var MAX_SIZE = 4,
+ MIN_SIZE = 0,
+ BUTTON_ID;
+
+ // Current fontsettings state
+ var fontState;
+
+ // Default themes
+ var THEMES = [
+ {
+ config: 'white',
+ text: 'White',
+ id: 0
+ },
+ {
+ config: 'sepia',
+ text: 'Sepia',
+ id: 1
+ },
+ {
+ config: 'night',
+ text: 'Night',
+ id: 2
+ }
+ ];
+
+ // Default font families
+ var FAMILIES = [
+ {
+ config: 'serif',
+ text: 'Serif',
+ id: 0
+ },
+ {
+ config: 'sans',
+ text: 'Sans',
+ id: 1
+ }
+ ];
+
+ // Return configured themes
+ function getThemes() {
+ return THEMES;
+ }
+
+ // Modify configured themes
+ function setThemes(themes) {
+ THEMES = themes;
+ updateButtons();
+ }
+
+ // Return configured font families
+ function getFamilies() {
+ return FAMILIES;
+ }
+
+ // Modify configured font families
+ function setFamilies(families) {
+ FAMILIES = families;
+ updateButtons();
+ }
+
+ // Save current font settings
+ function saveFontSettings() {
+ gitbook.storage.set('fontState', fontState);
+ update();
+ }
+
+ // Increase font size
+ function enlargeFontSize(e) {
+ e.preventDefault();
+ if (fontState.size >= MAX_SIZE) return;
+
+ fontState.size++;
+ saveFontSettings();
+ }
+
+ // Decrease font size
+ function reduceFontSize(e) {
+ e.preventDefault();
+ if (fontState.size
+/*
+ * Theme 1
+ */
+.color-theme-1 .dropdown-menu {
+ background-color: #111111;
+ border-color: #7e888b;
+}
+.color-theme-1 .dropdown-menu .dropdown-caret .caret-inner {
+ border-bottom: 9px solid #111111;
+}
+.color-theme-1 .dropdown-menu .buttons {
+ border-color: #7e888b;
+}
+.color-theme-1 .dropdown-menu .button {
+ color: #afa790;
+}
+.color-theme-1 .dropdown-menu .button:hover {
+ color: #73553c;
+}
+/*
+ * Theme 2
+ */
+.color-theme-2 .dropdown-menu {
+ background-color: #2d3143;
+ border-color: #272a3a;
+}
+.color-theme-2 .dropdown-menu .dropdown-caret .caret-inner {
+ border-bottom: 9px solid #2d3143;
+}
+.color-theme-2 .dropdown-menu .buttons {
+ border-color: #272a3a;
+}
+.color-theme-2 .dropdown-menu .button {
+ color: #62677f;
+}
+.color-theme-2 .dropdown-menu .button:hover {
+ color: #f4f4f5;
+}
+.book .book-header .font-settings .font-enlarge {
+ line-height: 30px;
+ font-size: 1.4em;
+}
+.book .book-header .font-settings .font-reduce {
+ line-height: 30px;
+ font-size: 1em;
+}
+.book.color-theme-1 .book-body {
+ color: #704214;
+ background: #f3eacb;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section {
+ background: #f3eacb;
+}
+.book.color-theme-2 .book-body {
+ color: #bdcadb;
+ background: #1c1f2b;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section {
+ background: #1c1f2b;
+}
+.book.font-size-0 .book-body .page-inner section {
+ font-size: 1.2rem;
+}
+.book.font-size-1 .book-body .page-inner section {
+ font-size: 1.4rem;
+}
+.book.font-size-2 .book-body .page-inner section {
+ font-size: 1.6rem;
+}
+.book.font-size-3 .book-body .page-inner section {
+ font-size: 2.2rem;
+}
+.book.font-size-4 .book-body .page-inner section {
+ font-size: 4rem;
+}
+.book.font-family-0 {
+ font-family: Georgia, serif;
+}
+.book.font-family-1 {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal {
+ color: #704214;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a {
+ color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 {
+ color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 {
+ border-color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 {
+ color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr {
+ background-color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote {
+ border-color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code {
+ background: #fdf6e3;
+ color: #657b83;
+ border-color: #f8df9c;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight {
+ background-color: inherit;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td {
+ border-color: #f5d06c;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr {
+ color: inherit;
+ background-color: #fdf6e3;
+ border-color: #444444;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) {
+ background-color: #fbeecb;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal {
+ color: #bdcadb;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a {
+ color: #3eb1d0;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 {
+ color: #fffffa;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 {
+ border-color: #373b4e;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 {
+ color: #373b4e;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr {
+ background-color: #373b4e;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote {
+ border-color: #373b4e;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code {
+ color: #9dbed8;
+ background: #2d3143;
+ border-color: #2d3143;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight {
+ background-color: #282a39;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td {
+ border-color: #3b3f54;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr {
+ color: #b6c2d2;
+ background-color: #2d3143;
+ border-color: #3b3f54;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) {
+ background-color: #35394b;
+}
+.book.color-theme-1 .book-header {
+ color: #afa790;
+ background: transparent;
+}
+.book.color-theme-1 .book-header .btn {
+ color: #afa790;
+}
+.book.color-theme-1 .book-header .btn:hover {
+ color: #73553c;
+ background: none;
+}
+.book.color-theme-1 .book-header h1 {
+ color: #704214;
+}
+.book.color-theme-2 .book-header {
+ color: #7e888b;
+ background: transparent;
+}
+.book.color-theme-2 .book-header .btn {
+ color: #3b3f54;
+}
+.book.color-theme-2 .book-header .btn:hover {
+ color: #fffff5;
+ background: none;
+}
+.book.color-theme-2 .book-header h1 {
+ color: #bdcadb;
+}
+.book.color-theme-1 .book-body .navigation {
+ color: #afa790;
+}
+.book.color-theme-1 .book-body .navigation:hover {
+ color: #73553c;
+}
+.book.color-theme-2 .book-body .navigation {
+ color: #383f52;
+}
+.book.color-theme-2 .book-body .navigation:hover {
+ color: #fffff5;
+}
+/*
+ * Theme 1
+ */
+.book.color-theme-1 .book-summary {
+ color: #afa790;
+ background: #111111;
+ border-right: 1px solid rgba(0, 0, 0, 0.07);
+}
+.book.color-theme-1 .book-summary .book-search {
+ background: transparent;
+}
+.book.color-theme-1 .book-summary .book-search input,
+.book.color-theme-1 .book-summary .book-search input:focus {
+ border: 1px solid transparent;
+}
+.book.color-theme-1 .book-summary ul.summary li.divider {
+ background: #7e888b;
+ box-shadow: none;
+}
+.book.color-theme-1 .book-summary ul.summary li i.fa-check {
+ color: #33cc33;
+}
+.book.color-theme-1 .book-summary ul.summary li.done > a {
+ color: #877f6a;
+}
+.book.color-theme-1 .book-summary ul.summary li a,
+.book.color-theme-1 .book-summary ul.summary li span {
+ color: #877f6a;
+ background: transparent;
+ font-weight: normal;
+}
+.book.color-theme-1 .book-summary ul.summary li.active > a,
+.book.color-theme-1 .book-summary ul.summary li a:hover {
+ color: #704214;
+ background: transparent;
+ font-weight: normal;
+}
+/*
+ * Theme 2
+ */
+.book.color-theme-2 .book-summary {
+ color: #bcc1d2;
+ background: #2d3143;
+ border-right: none;
+}
+.book.color-theme-2 .book-summary .book-search {
+ background: transparent;
+}
+.book.color-theme-2 .book-summary .book-search input,
+.book.color-theme-2 .book-summary .book-search input:focus {
+ border: 1px solid transparent;
+}
+.book.color-theme-2 .book-summary ul.summary li.divider {
+ background: #272a3a;
+ box-shadow: none;
+}
+.book.color-theme-2 .book-summary ul.summary li i.fa-check {
+ color: #33cc33;
+}
+.book.color-theme-2 .book-summary ul.summary li.done > a {
+ color: #62687f;
+}
+.book.color-theme-2 .book-summary ul.summary li a,
+.book.color-theme-2 .book-summary ul.summary li span {
+ color: #c1c6d7;
+ background: transparent;
+ font-weight: 600;
+}
+.book.color-theme-2 .book-summary ul.summary li.active > a,
+.book.color-theme-2 .book-summary ul.summary li a:hover {
+ color: #f4f4f5;
+ background: #252737;
+ font-weight: 600;
+}
+pre,
+code {
+ /* http://jmblog.github.io/color-themes-for-highlightjs */
+ /* Tomorrow Comment */
+ /* Tomorrow Red */
+ /* Tomorrow Orange */
+ /* Tomorrow Yellow */
+ /* Tomorrow Green */
+ /* Tomorrow Aqua */
+ /* Tomorrow Blue */
+ /* Tomorrow Purple */
+}
+pre .hljs-comment,
+code .hljs-comment,
+pre .hljs-title,
+code .hljs-title {
+ color: #8e908c;
+}
+pre .hljs-variable,
+code .hljs-variable,
+pre .hljs-attribute,
+code .hljs-attribute,
+pre .hljs-tag,
+code .hljs-tag,
+pre .hljs-regexp,
+code .hljs-regexp,
+pre .hljs-deletion,
+code .hljs-deletion,
+pre .ruby .hljs-constant,
+code .ruby .hljs-constant,
+pre .xml .hljs-tag .hljs-title,
+code .xml .hljs-tag .hljs-title,
+pre .xml .hljs-pi,
+code .xml .hljs-pi,
+pre .xml .hljs-doctype,
+code .xml .hljs-doctype,
+pre .html .hljs-doctype,
+code .html .hljs-doctype,
+pre .css .hljs-id,
+code .css .hljs-id,
+pre .css .hljs-class,
+code .css .hljs-class,
+pre .css .hljs-pseudo,
+code .css .hljs-pseudo {
+ color: #c82829;
+}
+pre .hljs-number,
+code .hljs-number,
+pre .hljs-preprocessor,
+code .hljs-preprocessor,
+pre .hljs-pragma,
+code .hljs-pragma,
+pre .hljs-built_in,
+code .hljs-built_in,
+pre .hljs-literal,
+code .hljs-literal,
+pre .hljs-params,
+code .hljs-params,
+pre .hljs-constant,
+code .hljs-constant {
+ color: #f5871f;
+}
+pre .ruby .hljs-class .hljs-title,
+code .ruby .hljs-class .hljs-title,
+pre .css .hljs-rules .hljs-attribute,
+code .css .hljs-rules .hljs-attribute {
+ color: #eab700;
+}
+pre .hljs-string,
+code .hljs-string,
+pre .hljs-value,
+code .hljs-value,
+pre .hljs-inheritance,
+code .hljs-inheritance,
+pre .hljs-header,
+code .hljs-header,
+pre .hljs-addition,
+code .hljs-addition,
+pre .ruby .hljs-symbol,
+code .ruby .hljs-symbol,
+pre .xml .hljs-cdata,
+code .xml .hljs-cdata {
+ color: #718c00;
+}
+pre .css .hljs-hexcolor,
+code .css .hljs-hexcolor {
+ color: #3e999f;
+}
+pre .hljs-function,
+code .hljs-function,
+pre .python .hljs-decorator,
+code .python .hljs-decorator,
+pre .python .hljs-title,
+code .python .hljs-title,
+pre .ruby .hljs-function .hljs-title,
+code .ruby .hljs-function .hljs-title,
+pre .ruby .hljs-title .hljs-keyword,
+code .ruby .hljs-title .hljs-keyword,
+pre .perl .hljs-sub,
+code .perl .hljs-sub,
+pre .javascript .hljs-title,
+code .javascript .hljs-title,
+pre .coffeescript .hljs-title,
+code .coffeescript .hljs-title {
+ color: #4271ae;
+}
+pre .hljs-keyword,
+code .hljs-keyword,
+pre .javascript .hljs-function,
+code .javascript .hljs-function {
+ color: #8959a8;
+}
+pre .hljs,
+code .hljs {
+ display: block;
+ background: white;
+ color: #4d4d4c;
+ padding: 0.5em;
+}
+pre .coffeescript .javascript,
+code .coffeescript .javascript,
+pre .javascript .xml,
+code .javascript .xml,
+pre .tex .hljs-formula,
+code .tex .hljs-formula,
+pre .xml .javascript,
+code .xml .javascript,
+pre .xml .vbscript,
+code .xml .vbscript,
+pre .xml .css,
+code .xml .css,
+pre .xml .hljs-cdata,
+code .xml .hljs-cdata {
+ opacity: 0.5;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre,
+.book .book-body .page-wrapper .page-inner section.normal code {
+ /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+ /* Tomorrow Comment */
+ /* Tomorrow Red */
+ /* Tomorrow Orange */
+ /* Tomorrow Yellow */
+ /* Tomorrow Green */
+ /* Tomorrow Aqua */
+ /* Tomorrow Blue */
+ /* Tomorrow Purple */
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-comment,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-comment,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-title {
+ color: #8e908c;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-variable,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-variable,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-attribute,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-tag,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-tag,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-regexp,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-deletion,
+.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant,
+.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant,
+.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi,
+.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi,
+.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype,
+.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype,
+.book .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype,
+.book .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype,
+.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id,
+.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-id,
+.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class,
+.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-class,
+.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo,
+.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo {
+ color: #c82829;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-number,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-number,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-pragma,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-built_in,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-literal,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-literal,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-params,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-params,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-constant,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-constant {
+ color: #f5871f;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute,
+.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute {
+ color: #eab700;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-string,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-string,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-value,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-value,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-header,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-header,
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-addition,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-addition,
+.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol,
+.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol,
+.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata,
+.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata {
+ color: #718c00;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor,
+.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor {
+ color: #3e999f;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-function,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-function,
+.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator,
+.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator,
+.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword,
+.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword,
+.book .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub,
+.book .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub,
+.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title,
+.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title {
+ color: #4271ae;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs-keyword,
+.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function,
+.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function {
+ color: #8959a8;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .hljs,
+.book .book-body .page-wrapper .page-inner section.normal code .hljs {
+ display: block;
+ background: white;
+ color: #4d4d4c;
+ padding: 0.5em;
+}
+.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript,
+.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript,
+.book .book-body .page-wrapper .page-inner section.normal pre .javascript .xml,
+.book .book-body .page-wrapper .page-inner section.normal code .javascript .xml,
+.book .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula,
+.book .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula,
+.book .book-body .page-wrapper .page-inner section.normal pre .xml .javascript,
+.book .book-body .page-wrapper .page-inner section.normal code .xml .javascript,
+.book .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript,
+.book .book-body .page-wrapper .page-inner section.normal code .xml .vbscript,
+.book .book-body .page-wrapper .page-inner section.normal pre .xml .css,
+.book .book-body .page-wrapper .page-inner section.normal code .xml .css,
+.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata,
+.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata {
+ opacity: 0.5;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code {
+ /*
+
+Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
+
+*/
+ /* Solarized Green */
+ /* Solarized Cyan */
+ /* Solarized Blue */
+ /* Solarized Yellow */
+ /* Solarized Orange */
+ /* Solarized Red */
+ /* Solarized Violet */
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs {
+ display: block;
+ padding: 0.5em;
+ background: #fdf6e3;
+ color: #657b83;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-comment,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-template_comment,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-template_comment,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-header,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-header,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-doctype,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-doctype,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pi,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pi,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-string,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-string,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-javadoc,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-javadoc {
+ color: #93a1a1;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-winutils,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-winutils,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .method,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .method,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-addition,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-addition,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-tag,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-tag,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-request,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-request,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-status,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-status,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .nginx .hljs-title,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .nginx .hljs-title {
+ color: #859900;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-number,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-number,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-command,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-command,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-string,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-string,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag .hljs-value,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-tag .hljs-value,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-rules .hljs-value,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-rules .hljs-value,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-phpdoc,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-phpdoc,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-hexcolor,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-hexcolor,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_url,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_url {
+ color: #2aa198;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-title,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-title,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-localvars,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-localvars,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-chunk,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-chunk,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-decorator,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-decorator,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-identifier,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-identifier,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .vhdl .hljs-literal,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .vhdl .hljs-literal,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-id,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-id,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-function,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-function {
+ color: #268bd2;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-variable,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-body,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-body,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .smalltalk .hljs-number,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .smalltalk .hljs-number,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-constant,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-class .hljs-title,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-class .hljs-title,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-parent,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-parent,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .haskell .hljs-type,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .haskell .hljs-type,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_reference,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_reference {
+ color: #b58900;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor .hljs-keyword,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor .hljs-keyword,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-shebang,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-shebang,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol .hljs-string,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol .hljs-string,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-change,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-change,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-special,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-special,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attr_selector,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attr_selector,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-subst,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-subst,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-cdata,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-cdata,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .clojure .hljs-title,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .clojure .hljs-title,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-header,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-header {
+ color: #cb4b16;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-deletion,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-important,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-important {
+ color: #dc322f;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_label,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_label {
+ color: #6c71c4;
+}
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula,
+.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula {
+ background: #eee8d5;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code {
+ /* Tomorrow Night Bright Theme */
+ /* Original theme - https://github.com/chriskempson/tomorrow-theme */
+ /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+ /* Tomorrow Comment */
+ /* Tomorrow Red */
+ /* Tomorrow Orange */
+ /* Tomorrow Yellow */
+ /* Tomorrow Green */
+ /* Tomorrow Aqua */
+ /* Tomorrow Blue */
+ /* Tomorrow Purple */
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-comment,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-title {
+ color: #969896;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-variable,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-tag,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-deletion,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-id,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-class,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo {
+ color: #d54e53;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-number,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-number,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-literal,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-literal,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-params,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-params,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-constant {
+ color: #e78c45;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute {
+ color: #e7c547;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-string,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-string,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-value,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-value,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-header,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-header,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-addition,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-addition,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata {
+ color: #b9ca4a;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor {
+ color: #70c0b1;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-function,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-function,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title {
+ color: #7aa6da;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function {
+ color: #c397d8;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs {
+ display: block;
+ background: black;
+ color: #eaeaea;
+ padding: 0.5em;
+}
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .xml,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .xml,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .javascript,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .javascript,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .vbscript,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .css,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .css,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata,
+.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata {
+ opacity: 0.5;
+}
+.book .book-summary .book-logo {
+ text-align: center;
+ padding: 20px;
+}
\ No newline at end of file
+require(['gitbook', 'jQuery'], function (gitbook, $) {
+ var url = ''
+ var style = ''
+ var insertLogo = function (url, style) {
+ $('.book-summary').children().eq(0).before('')
+ }
+ gitbook.events.bind('start', function (e, config) {
+ url = config['insert-logo']['url']
+ style = config['insert-logo']['style']
+ })
+
+ gitbook.events.bind("page.change", function() {
+ insertLogo(url, style)
+ })
+})
+(function() {
+ var newEl = document.createElement('script'),
+ firstScriptTag = document.getElementsByTagName('script')[0];
+
+ if (firstScriptTag) {
+ newEl.async = 1;
+ newEl.src = '//' + window.location.hostname + ':35729/livereload.js';
+ firstScriptTag.parentNode.insertBefore(newEl, firstScriptTag);
+ }
+
+})();
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.12
+ * Copyright (C) 2015 Oliver Nightingale
+ * MIT Licensed
+ * @license
+ */
+!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.12",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){return arguments.length&&null!=t&&void 0!=t?Array.isArray(t)?t.map(function(t){return t.toLowerCase()}):t.toString().trim().toLowerCase().split(/[\s\-]+/):[]},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(en.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(r===t)return o;t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o]}return r===t?o:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;)t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return r>t?o:t>r?o+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,u=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(l),p=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,y=/^(.+?)(ed|ing)$/,g=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,O=/^(.+?)e$/,P=/ll$/,N=new RegExp("^"+o+i+"[^aeiouwxy]$"),T=function(n){var i,o,r,s,a,h,l;if(n.length
+require([
+ 'gitbook',
+ 'jquery'
+], function(gitbook, $) {
+ // Define global search engine
+ function LunrSearchEngine() {
+ this.index = null;
+ this.store = {};
+ this.name = 'LunrSearchEngine';
+ }
+
+ // Initialize lunr by fetching the search index
+ LunrSearchEngine.prototype.init = function() {
+ var that = this;
+ var d = $.Deferred();
+
+ $.getJSON(gitbook.state.basePath+'/search_index.json')
+ .then(function(data) {
+ // eslint-disable-next-line no-undef
+ that.index = lunr.Index.load(data.index);
+ that.store = data.store;
+ d.resolve();
+ });
+
+ return d.promise();
+ };
+
+ // Search for a term and return results
+ LunrSearchEngine.prototype.search = function(q, offset, length) {
+ var that = this;
+ var results = [];
+
+ if (this.index) {
+ results = $.map(this.index.search(q), function(result) {
+ var doc = that.store[result.ref];
+
+ return {
+ title: doc.title,
+ url: doc.url,
+ body: doc.summary || doc.body
+ };
+ });
+ }
+
+ return $.Deferred().resolve({
+ query: q,
+ results: results.slice(0, length),
+ count: results.length
+ }).promise();
+ };
+
+ // Set gitbook research
+ gitbook.events.bind('start', function(e, config) {
+ var engine = gitbook.search.getEngine();
+ if (!engine) {
+ gitbook.search.setEngine(LunrSearchEngine, config);
+ }
+ });
+});
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.12
+ * Copyright (C) 2015 Oliver Nightingale
+ * MIT Licensed
+ * @license
+ */
+!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.12",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){return arguments.length&&null!=t&&void 0!=t?Array.isArray(t)?t.map(function(t){return t.toLowerCase()}):t.toString().trim().toLowerCase().split(/[\s\-]+/):[]},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(en.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(r===t)return o;t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o]}return r===t?o:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;)t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return r>t?o:t>r?o+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,u=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(l),p=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,y=/^(.+?)(ed|ing)$/,g=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,O=/^(.+?)e$/,P=/ll$/,N=new RegExp("^"+o+i+"[^aeiouwxy]$"),T=function(n){var i,o,r,s,a,h,l;if(n.length
+require([
+ 'gitbook',
+ 'jquery'
+], function(gitbook, $) {
+ // Global search objects
+ var engine = null;
+ var initialized = false;
+
+ // Set a new search engine
+ function setEngine(Engine, config) {
+ initialized = false;
+ engine = new Engine(config);
+
+ init(config);
+ }
+
+ // Initialize search engine with config
+ function init(config) {
+ if (!engine) throw new Error('No engine set for research. Set an engine using gitbook.research.setEngine(Engine).');
+
+ return engine.init(config)
+ .then(function() {
+ initialized = true;
+ gitbook.events.trigger('search.ready');
+ });
+ }
+
+ // Launch search for query q
+ function query(q, offset, length) {
+ if (!initialized) throw new Error('Search has not been initialized');
+ return engine.search(q, offset, length);
+ }
+
+ // Get stats about search
+ function getEngine() {
+ return engine? engine.name : null;
+ }
+
+ function isInitialized() {
+ return initialized;
+ }
+
+ // Initialize gitbook.search
+ gitbook.search = {
+ setEngine: setEngine,
+ getEngine: getEngine,
+ query: query,
+ isInitialized: isInitialized
+ };
+});
\ No newline at end of file
+/*
+ This CSS only styled the search results section, not the search input
+ It defines the basic interraction to hide content when displaying results, etc
+*/
+#book-search-results .search-results {
+ display: none;
+}
+#book-search-results .search-results ul.search-results-list {
+ list-style-type: none;
+ padding-left: 0;
+}
+#book-search-results .search-results ul.search-results-list li {
+ margin-bottom: 1.5rem;
+ padding-bottom: 0.5rem;
+ /* Highlight results */
+}
+#book-search-results .search-results ul.search-results-list li p em {
+ background-color: rgba(255, 220, 0, 0.4);
+ font-style: normal;
+}
+#book-search-results .search-results .no-results {
+ display: none;
+}
+#book-search-results.open .search-results {
+ display: block;
+}
+#book-search-results.open .search-noresults {
+ display: none;
+}
+#book-search-results.no-results .search-results .has-results {
+ display: none;
+}
+#book-search-results.no-results .search-results .no-results {
+ display: block;
+}
+require([
+ 'gitbook',
+ 'jquery'
+], function(gitbook, $) {
+ var MAX_RESULTS = 15;
+ var MAX_DESCRIPTION_SIZE = 500;
+
+ var usePushState = (typeof history.pushState !== 'undefined');
+
+ // DOM Elements
+ var $body = $('body');
+ var $bookSearchResults;
+ var $searchInput;
+ var $searchList;
+ var $searchTitle;
+ var $searchResultsCount;
+ var $searchQuery;
+
+ // Throttle search
+ function throttle(fn, wait) {
+ var timeout;
+
+ return function() {
+ var ctx = this, args = arguments;
+ if (!timeout) {
+ timeout = setTimeout(function() {
+ timeout = null;
+ fn.apply(ctx, args);
+ }, wait);
+ }
+ };
+ }
+
+ function displayResults(res) {
+ $bookSearchResults.addClass('open');
+
+ var noResults = res.count == 0;
+ $bookSearchResults.toggleClass('no-results', noResults);
+
+ // Clear old results
+ $searchList.empty();
+
+ // Display title for research
+ $searchResultsCount.text(res.count);
+ $searchQuery.text(res.query);
+
+ // Create an element for each result
+ res.results.forEach(function(res) {
+ var $li = $('', {
+ 'class': 'search-results-item'
+ });
+
+ var $title = $('');
+
+ var $link = $('', {
+ 'href': gitbook.state.basePath + '/' + res.url,
+ 'text': res.title
+ });
+
+ var content = res.body.trim();
+ if (content.length > MAX_DESCRIPTION_SIZE) {
+ content = content.slice(0, MAX_DESCRIPTION_SIZE).trim()+'...';
+ }
+ var $content = $('').html(content);
+
+ $link.appendTo($title);
+ $title.appendTo($li);
+ $content.appendTo($li);
+ $li.appendTo($searchList);
+ });
+ }
+
+ function launchSearch(q) {
+ // Add class for loading
+ $body.addClass('with-search');
+ $body.addClass('search-loading');
+
+ // Launch search query
+ throttle(gitbook.search.query(q, 0, MAX_RESULTS)
+ .then(function(results) {
+ displayResults(results);
+ })
+ .always(function() {
+ $body.removeClass('search-loading');
+ }), 1000);
+ }
+
+ function closeSearch() {
+ $body.removeClass('with-search');
+ $bookSearchResults.removeClass('open');
+ }
+
+ function launchSearchFromQueryString() {
+ var q = getParameterByName('q');
+ if (q && q.length > 0) {
+ // Update search input
+ $searchInput.val(q);
+
+ // Launch search
+ launchSearch(q);
+ }
+ }
+
+ function bindSearch() {
+ // Bind DOM
+ $searchInput = $('#book-search-input input');
+ $bookSearchResults = $('#book-search-results');
+ $searchList = $bookSearchResults.find('.search-results-list');
+ $searchTitle = $bookSearchResults.find('.search-results-title');
+ $searchResultsCount = $searchTitle.find('.search-results-count');
+ $searchQuery = $searchTitle.find('.search-query');
+
+ // Launch query based on input content
+ function handleUpdate() {
+ var q = $searchInput.val();
+
+ if (q.length == 0) {
+ closeSearch();
+ }
+ else {
+ launchSearch(q);
+ }
+ }
+
+ // Detect true content change in search input
+ // Workaround for IE < 9
+ var propertyChangeUnbound = false;
+ $searchInput.on('propertychange', function(e) {
+ if (e.originalEvent.propertyName == 'value') {
+ handleUpdate();
+ }
+ });
+
+ // HTML5 (IE9 & others)
+ $searchInput.on('input', function(e) {
+ // Unbind propertychange event for IE9+
+ if (!propertyChangeUnbound) {
+ $(this).unbind('propertychange');
+ propertyChangeUnbound = true;
+ }
+
+ handleUpdate();
+ });
+
+ // Push to history on blur
+ $searchInput.on('blur', function(e) {
+ // Update history state
+ if (usePushState) {
+ var uri = updateQueryString('q', $(this).val());
+ history.pushState({ path: uri }, null, uri);
+ }
+ });
+ }
+
+ gitbook.events.on('page.change', function() {
+ bindSearch();
+ closeSearch();
+
+ // Launch search based on query parameter
+ if (gitbook.search.isInitialized()) {
+ launchSearchFromQueryString();
+ }
+ });
+
+ gitbook.events.on('search.ready', function() {
+ bindSearch();
+
+ // Launch search from query param at start
+ launchSearchFromQueryString();
+ });
+
+ function getParameterByName(name) {
+ var url = window.location.href;
+ name = name.replace(/[\[\]]/g, '\\$&');
+ var regex = new RegExp('[?&]' + name + '(=([^^&#]*)|&|#|$)', 'i'),
+ results = regex.exec(url);
+ if (!results) return null;
+ if (!results[2]) return '';
+ return decodeURIComponent(results[2].replace(/\+/g, ' '));
+ }
+
+ function updateQueryString(key, value) {
+ value = encodeURIComponent(value);
+
+ var url = window.location.href;
+ var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi'),
+ hash;
+
+ if (re.test(url)) {
+ if (typeof value !== 'undefined' && value !== null)
+ return url.replace(re, '$1' + key + '=' + value + '$2$3');
+ else {
+ hash = url.split('#');
+ url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
+ if (typeof hash[1] !== 'undefined' && hash[1] !== null)
+ url += '#' + hash[1];
+ return url;
+ }
+ }
+ else {
+ if (typeof value !== 'undefined' && value !== null) {
+ var separator = url.indexOf('?') !== -1 ? '&' : '?';
+ hash = url.split('#');
+ url = hash[0] + separator + key + '=' + value;
+ if (typeof hash[1] !== 'undefined' && hash[1] !== null)
+ url += '#' + hash[1];
+ return url;
+ }
+ else
+ return url;
+ }
+ }
+});
+require(['gitbook', 'jquery'], function(gitbook, $) {
+ var SITES = {
+ 'facebook': {
+ 'label': 'Facebook',
+ 'icon': 'fa fa-facebook',
+ 'onClick': function(e) {
+ e.preventDefault();
+ window.open('http://www.facebook.com/sharer/sharer.php?s=100&p[url]='+encodeURIComponent(location.href));
+ }
+ },
+ 'twitter': {
+ 'label': 'Twitter',
+ 'icon': 'fa fa-twitter',
+ 'onClick': function(e) {
+ e.preventDefault();
+ window.open('http://twitter.com/home?status='+encodeURIComponent(document.title+' '+location.href));
+ }
+ },
+ 'google': {
+ 'label': 'Google+',
+ 'icon': 'fa fa-google-plus',
+ 'onClick': function(e) {
+ e.preventDefault();
+ window.open('https://plus.google.com/share?url='+encodeURIComponent(location.href));
+ }
+ },
+ 'weibo': {
+ 'label': 'Weibo',
+ 'icon': 'fa fa-weibo',
+ 'onClick': function(e) {
+ e.preventDefault();
+ window.open('http://service.weibo.com/share/share.php?content=utf-8&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title));
+ }
+ },
+ 'instapaper': {
+ 'label': 'Instapaper',
+ 'icon': 'fa fa-instapaper',
+ 'onClick': function(e) {
+ e.preventDefault();
+ window.open('http://www.instapaper.com/text?u='+encodeURIComponent(location.href));
+ }
+ },
+ 'vk': {
+ 'label': 'VK',
+ 'icon': 'fa fa-vk',
+ 'onClick': function(e) {
+ e.preventDefault();
+ window.open('http://vkontakte.ru/share.php?url='+encodeURIComponent(location.href));
+ }
+ }
+ };
+
+
+
+ gitbook.events.bind('start', function(e, config) {
+ var opts = config.sharing;
+
+ // Create dropdown menu
+ var menu = $.map(opts.all, function(id) {
+ var site = SITES[id];
+
+ return {
+ text: site.label,
+ onClick: site.onClick
+ };
+ });
+
+ // Create main button with dropdown
+ if (menu.length > 0) {
+ gitbook.toolbar.createButton({
+ icon: 'fa fa-share-alt',
+ label: 'Share',
+ position: 'right',
+ dropdown: [menu]
+ });
+ }
+
+ // Direct actions to share
+ $.each(SITES, function(sideId, site) {
+ if (!opts[sideId]) return;
+
+ gitbook.toolbar.createButton({
+ icon: site.icon,
+ label: site.text,
+ position: 'right',
+ onClick: site.onClick
+ });
+ });
+ });
+});
+.swagger > ul {
+ list-style: none;
+ padding-left: 0;
+}
+.swagger > ul > li {
+ list-style: none;
+ background: #f8f8f8;
+ border: 1px solid #eeeeee;
+ list-style: none;
+ padding: 20px;
+ margin: 20px 0;
+ box-shadow: 0px 0px 2px rgba(0,0,0,.2);
+}
+.swagger > ul > li.even {
+ background: #fcfcfc;
+}
+.swagger > ul > li > h3, .swagger > ul > li > h4 {
+ margin: 0;
+ cursor: pointer;
+}
+.swagger > ul > li.collapse {
+ height: 120px;
+ overflow: hidden;
+}
+.swagger > ul > li .path {
+ margin-bottom: 20px;
+}
+.swagger > ul > li .method {
+ padding: 4px;
+ border-radius: 3px;
+ color: #ffffff;
+ margin-right: 10px;
+}
+.swagger > ul > li .method.get {
+ background: #3a9c68;
+}
+.swagger > ul > li .method.post {
+ background: #4397a7;
+}
+.swagger > ul > li .method.put {
+ background: #a74374;
+}
+.swagger > ul > li .method.patch {
+ background: #5043a7;
+}
+.swagger > ul > li .method.delete {
+ background: #ab3333;
+}
\ No newline at end of file
+require(['gitbook', 'jquery'], function(gitbook, $) {
+ var items = $('.swagger > ul > li');
+ items.addClass('collapse');
+ items.find('h3').on('click', function(event) {
+ $(event.target).parent().toggleClass('collapse');
+ });
+});
\ No newline at end of file
+/*!
+ * Preboot v2
+ *
+ * Open sourced under MIT license by @mdo.
+ * Some variables and mixins from Bootstrap (Apache 2 license).
+ */.api-method{margin:30px -30px}.api-method:last-of-type{margin-bottom:0}.api-method .api-method-definition{padding:0 30px}.api-method .api-method-code{padding:30px 30px 15px;background-color:#FEFEFE;border-top:1px solid #F1EFEF;border-bottom:1px solid #F1EFEF}.api-method .api-method-code pre>code{white-space:pre-wrap;white-space:-moz- pre-wrap;white-space:- pre-wrap;white-space:-o- pre-wrap;word-wrap:break-word}.api-method:after{clear:both}.book.two-columns .api-method{position:relative;width:calc(100% + 60px)}.book.two-columns .api-method:after{content:" ";display:block;visibility:hidden;clear:both}.book.two-columns .api-method .api-method-title{margin-top:0}.book.two-columns .api-method .api-method-definition{float:left;width:50%}.book.two-columns .api-method .api-method-code{position:relative;float:left;width:50%;padding:30px 30px 15px;border-left:1px solid #F1EFEF;border-top:none;border-bottom:none;transition:opacity .3s ease}.book.two-columns .page-wrapper.comments-open-from-definition .api-method-code{opacity:.1}.book-header{padding:0;position:fixed;top:0;left:0;right:0;background-color:#FFF;border-bottom:1px solid rgba(0,0,0,.07);-webkit-transition:left 250ms ease;-moz-transition:left 250ms ease;-o-transition:left 250ms ease;transition:left 250ms ease}.book.with-summary .book-header{left:300px}@media (max-width:600px){.book.with-summary .book-header{left:0}}.book-header .btn.lang-switcher{text-transform:none;font-weight:500;border-radius:0}.book-header .btn.lang-switcher.active{background-color:#03677D;color:#FFF}#book-search-results .search-results{padding:20px 30px 0}#book-search-input{padding:5px;margin-top:0}.book .book-body .page-wrapper .page-inner .comments-section{max-width:calc(100% - 40px)}.book .book-body .page-wrapper .page-inner .comments-section .comments-area{z-index:1}.book .book-body .page-wrapper.comments-open-from-definition .page-inner{left:0!important}.color-theme-3 .dropdown-menu{background-color:#2D3134;border-color:#373B3E}.color-theme-3 .dropdown-menu .dropdown-caret .caret-inner{border-bottom:9px solid #2D3134}.color-theme-3 .dropdown-menu .buttons{border-color:#373B3E}.color-theme-3 .dropdown-menu .button{color:#D0D4D7}.color-theme-3 .dropdown-menu .button:hover{color:#EEE}.book.color-theme-3 .book-header{color:#D0D4D7;background:#272B2D}.book.color-theme-3 .book-header .btn{color:#D0D4D7}.book.color-theme-3 .book-header .btn:hover{color:#EEE;background:0 0}.book.color-theme-3 .book-header .btn.lang-switcher.active{background-color:#186469}.book.color-theme-3 .book-header .btn.lang-switcher.active:hover{background-color:#186469}.book.color-theme-3 .book-header h1{color:#EEE}.book.color-theme-3 .book-body section a{color:#3EAAB1}.book.color-theme-3 .book-body section .api-method-code{color:#EEE;background-color:#272B2D}.book.color-theme-3 .book-body section .api-method-code h1,.book.color-theme-3 .book-body section .api-method-code h2,.book.color-theme-3 .book-body section .api-method-code h3,.book.color-theme-3 .book-body section .api-method-code h4,.book.color-theme-3 .book-body section .api-method-code h5,.book.color-theme-3 .book-body section .api-method-code h6{color:#fff}.book.color-theme-3 .book-body section .api-method-code h6{color:#D0D4D7}.book.color-theme-3 .book-body section .api-method-code hr{background-color:#373B3E}.book.color-theme-3 .book-body section .api-method-code blockquote{border-color:#373B3E}.book.color-theme-3 .book-body section .api-method-code code,.book.color-theme-3 .book-body section .api-method-code pre{color:#EEE;background-color:#2D3134;border-radius:3px}.book.color-theme-3 .book-body section .api-method-code table{border-collapse:separate;border:1px solid #373B3E;border-radius:3px}.book.color-theme-3 .book-body section .api-method-code table td,.book.color-theme-3 .book-body section .api-method-code table th{border:none}.book.color-theme-3 .book-body section .api-method-code table th{border-bottom:1px solid #373B3E}.book.color-theme-3 .book-body section .api-method-code table tr{color:#EEE;background-color:transparent}.book.color-theme-3 .book-body section .api-method-code table tr:nth-child(2n){background-color:#2D3134}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs{display:block;overflow-x:auto;padding:.5em;background:#474949;color:#d1d9e1}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-comment,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-quote,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-comment,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-quote{color:#969896;font-style:italic}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-addition,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-keyword,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-literal,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-selector-tag,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-type,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-addition,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-keyword,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-literal,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-selector-tag,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-type{color:#c9c}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-number,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-selector-attr,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-selector-pseudo,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-number,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-selector-attr,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-selector-pseudo{color:#f99157}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-doctag,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-regexp,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-string,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-doctag,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-regexp,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-string{color:#8abeb7}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-built_in,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-name,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-section,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-title,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-built_in,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-name,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-section,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-title{color:#b5bd68}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-class .hljs-title,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-selector-id,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-template-variable,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-variable,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-class .hljs-title,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-selector-id,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-template-variable,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-variable{color:#fc6}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-name,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-section,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-strong,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-name,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-section,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-strong{font-weight:700}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-bullet,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-link,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-meta,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-subst,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-symbol,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-bullet,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-link,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-meta,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-subst,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-symbol{color:#f99157}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-deletion,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-deletion{color:#dc322f}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-formula,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-formula{background:#eee8d5}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-attr,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-attribute,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-attr,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-attribute{color:#81a2be}.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code code .hljs-emphasis,.book.color-theme-3 .book-body .page-wrapper .page-inner section.normal .api-method-code pre .hljs-emphasis{font-style:italic}.page-inner{max-width:100%;padding:0;margin-top:50px}.markdown-section{padding:20px 30px 0}
\ No newline at end of file
+require(["gitbook","jquery"],function(t,e){function n(e){r=t.storage.get("themeApi",{split:e.split,currentLang:null})}function a(){t.storage.set("themeApi",r),i()}function i(){e(".book").toggleClass("two-columns",r.split),s=e(".api-method-sample"),s.each(function(){var t=!(e(this).data("lang")==r.currentLang);e(this).toggleClass("hidden",t)})}function o(){t.toolbar.removeButtons(c),c=[],s=e(".api-method-sample");var n=[],i=!1;s.each(function(){var t,a,o=!1,s=e(this).data("lang"),c=e(this).data("name");s==r.currentLang&&(i=!0,o=!0),t=e.grep(n,function(t){return t.name==c}),a=!!t.length,a||n.push({name:c,lang:s,"default":o})}),n.reverse(),e.each(n,function(o,s){var l,g=s["default"]||!i&&o==n.length-1;l=t.toolbar.createButton({text:s.name,position:"right",className:"lang-switcher"+(g?" active":""),onClick:function(t){r.currentLang=s.lang,a(),e(".btn.lang-switcher.active").removeClass("active"),e(t.currentTarget).addClass("active")}}),c.push(l),g&&(r.currentLang=s.lang)})}var s,r,c=[],l=[{config:"light",text:"Light",id:0},{config:"dark",text:"Dark",id:3}];t.events.bind("start",function(e,i){var o=i["theme-api"];t.toolbar.createButton({icon:"fa fa-columns",label:"Change Layout",onClick:function(){r.split=!r.split,a()}}),t.fontsettings.setThemes(l),t.fontsettings.setTheme(o.theme),n(o)}),t.events.on("page.change",function(){o(),i()}),t.events.on("comment.toggled",function(e,n,a){if(n.parents(".api-method-definition").length){var i=t.state.$book.find(".page-wrapper");i.toggleClass("comments-open-from-definition",a&&r.split)}})});
+!function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,function(e){var n=t[s][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s0&&t-1 in e)}function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?de.grep(e,function(e){return e===t!==n}):"string"!=typeof t?de.grep(e,function(e){return se.call(t,e)>-1!==n}):je.test(t)?de.filter(t,e,n):(t=de.filter(t,e),de.grep(e,function(e){return se.call(t,e)>-1!==n&&1===e.nodeType}))}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]=!0}),t}function a(e){return e}function u(e){throw e}function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&de.isFunction(r=e.then)?r.call(e,t,n):t.call(void 0,e)}catch(e){n.call(void 0,e)}}function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventListener("load",l),de.ready()}function f(){this.expando=de.expando+f.uid++}function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Ie.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Pe,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n=p(n)}catch(e){}Re.set(e,t,n)}else n=void 0;return n}function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:function(){return de.css(e,t,"")},u=a(),c=n&&n[3]||(de.cssNumber[t]?"":"px"),l=(de.cssNumber[t]||"px"!==c&&+u)&&$e.exec(de.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do i=i||".5",l/=i,de.style(e,t,l+c);while(i!==(i=a()/u)&&1!==i&&--s)}return n&&(l=+l||+u||0,o=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=o)),o}function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t=n.body.appendChild(n.createElement(r)),o=de.css(t,"display"),t.parentNode.removeChild(t),"none"===o&&(o="block"),Ue[r]=o,o)}function m(e,t){for(var n,r,o=[],i=0,s=e.length;i-1)o&&o.push(i);else if(c=de.contains(i.ownerDocument,i),s=v(f.appendChild(i),"script"),c&&y(s),n)for(l=0;i=s[l++];)Ve.test(i.type||"")&&n.push(i);return f}function b(){return!0}function w(){return!1}function T(){try{return te.activeElement}catch(e){}}function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(a in t)C(e,a,n,r,t[a],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),o===!1)o=w;else if(!o)return e;return 1===i&&(s=o,o=function(e){return de().off(e),s.apply(this,arguments)},o.guid=s.guid||(s.guid=de.guid++)),e.each(function(){de.event.add(this,t,o,r,n)})}function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e:e}function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&&(i=Fe.access(e),s=Fe.set(t,i),c=i.events)){delete s.handle,s.events={};for(o in c)for(n=0,r=c[o].length;n1&&"string"==typeof d&&!pe.checkClone&&nt.test(d))return e.each(function(n){var i=e.eq(n);g&&(t[0]=d.call(this,n,i.html())),A(i,t,r,o)});if(p&&(i=x(t,e[0].ownerDocument,!1,e,o),s=i.firstChild,1===i.childNodes.length&&(i=s),s||o)){for(a=de.map(v(i,"script"),k),u=a.length;f=0&&nC.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[$]=!0,e}function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]]=t}function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function a(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return function(t){return"form"in t?t.parentNode&&t.disabled===!1?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&je(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o,i=e([],n.length,t),s=i.length;s--;)n[o=i[s]]&&(n[o]=!(r[o]=n[o]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var o=0,i=n.length;o-1&&(r[c]=!(s[c]=f))}}else x=v(x===s?x.splice(d,x.length):x),i?i(null,s,x,u):K.apply(s,x)})}function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.relative[" "],a=i?1:0,u=d(function(e){return e===t},s,!0),c=d(function(e){return ee(t,e)>-1},s,!0),l=[function(e,n,r){var o=!i&&(r||n!==A)||((t=n).nodeType?u(e,n,r):c(e,n,r));return t=null,o}];a1&&g(l),a>1&&h(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(ae,"$1"),n,a0,i=e.length>0,s=function(r,s,a,u,c){var l,f,p,h=0,d="0",g=r&&[],m=[],y=A,x=r||i&&C.find.TAG("*",c),b=B+=null==y?1:Math.random()||.1,w=x.length;for(c&&(A=s===L||s||c);d!==w&&null!=(l=x[d]);d++){if(i&&l){for(f=0,s||l.ownerDocument===L||(O(l),a=!F);p=e[f++];)if(p(l,s||L,a)){u.push(l);break}c&&(B=b)}o&&((l=!p&&l)&&h--,r&&g.push(l))}if(h+=d,o&&d!==h){for(f=0;p=n[f++];)p(g,m,s,a);if(r){if(h>0)for(;d--;)g[d]||m[d]||(m[d]=Q.call(u));m=v(m)}K.apply(u,m),c&&!r&&m.length>0&&h+n.length>1&&t.uniqueSort(u)}return c&&(B=b,A=y),g};return o?r(s):s}var w,T,C,j,k,E,S,N,A,q,D,O,L,H,F,R,I,P,M,$="sizzle"+1*new Date,W=e.document,B=0,_=0,U=n(),z=n(),X=n(),V=function(e,t){return e===t&&(D=!0),0},G={}.hasOwnProperty,Y=[],Q=Y.pop,J=Y.push,K=Y.push,Z=Y.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),le=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(ie),pe=new RegExp("^"+re+"$"),he={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ie),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r>10|55296,1023&r|56320)},we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Te=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Ce=function(){O()},je=d(function(e){return e.disabled===!0&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{K.apply(Y=Z.call(W.childNodes),W.childNodes),Y[W.childNodes.length].nodeType}catch(e){K={apply:Y.length?function(e,t){J.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}T=t.support={},k=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},O=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:W;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=L.documentElement,F=!k(L),W!==L&&(n=L.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ce,!1):n.attachEvent&&n.attachEvent("onunload",Ce)),T.attributes=o(function(e){return e.className="i",!e.getAttribute("className")}),T.getElementsByTagName=o(function(e){return e.appendChild(L.createComment("")),!e.getElementsByTagName("*").length}),T.getElementsByClassName=me.test(L.getElementsByClassName),T.getById=o(function(e){return H.appendChild(e).id=$,!L.getElementsByName||!L.getElementsByName($).length}),T.getById?(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){return e.getAttribute("id")===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n,r,o,i=t.getElementById(e);if(i){if(n=i.getAttributeNode("id"),n&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if(n=i.getAttributeNode("id"),n&&n.value===e)return[i]}return[]}}),C.find.TAG=T.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):T.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},C.find.CLASS=T.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&F)return t.getElementsByClassName(e)},I=[],R=[],(T.qsa=me.test(L.querySelectorAll))&&(o(function(e){H.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&R.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||R.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||R.push("~="),e.querySelectorAll(":checked").length||R.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||R.push(".#.+[+~]")}),o(function(e){e.innerHTML="";var t=L.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&R.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&R.push(":enabled",":disabled"),H.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&R.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),R.push(",.*:")})),(T.matchesSelector=me.test(P=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){T.disconnectedMatch=P.call(e,"*"),P.call(e,"[s!='']:x"),I.push("!=",ie)}),R=R.length&&new RegExp(R.join("|")),I=I.length&&new RegExp(I.join("|")),t=me.test(H.compareDocumentPosition),M=t||me.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return D=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!T.sortDetached&&t.compareDocumentPosition(e)===n?e===L||e.ownerDocument===W&&M(W,e)?-1:t===L||t.ownerDocument===W&&M(W,t)?1:q?ee(q,e)-ee(q,t):0:4&n?-1:1)}:function(e,t){if(e===t)return D=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===L?-1:t===L?1:o?-1:i?1:q?ee(q,e)-ee(q,t):0;if(o===i)return s(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?s(a[r],u[r]):a[r]===W?-1:u[r]===W?1:0},L):L},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==L&&O(e),n=n.replace(le,"='$1']"),T.matchesSelector&&F&&!X[n+" "]&&(!I||!I.test(n))&&(!R||!R.test(n)))try{var r=P.call(e,n);if(r||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,L,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==L&&O(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==L&&O(e);var n=C.attrHandle[t.toLowerCase()],r=n&&G.call(C.attrHandle,t.toLowerCase())?n(e,t,!F):void 0;return void 0!==r?r:T.attributes||!F?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(we,Te)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,o=0;if(D=!T.detectDuplicates,q=!T.sortStable&&e.slice(0),e.sort(V),D){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return q=null,e},j=t.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=j(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=j(t);return n},C=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,be),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,be),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,be).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(o){var i=t.attr(o,e);return null==i?"!="===n:!n||(i+="","="===n?i===r:"!="===n?i!==r:"^="===n?r&&0===i.indexOf(r):"*="===n?r&&i.indexOf(r)>-1:"$="===n?r&&i.slice(-r.length)===r:"~="===n?(" "+i.replace(se," ")+" ").indexOf(r)>-1:"|="===n&&(i===r||i.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,h,d,g=i!==s?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!u&&!a,x=!1;if(m){if(i){for(;g;){for(p=t;p=p[g];)if(a?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&y){for(p=m,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h&&c[2],p=h&&m.childNodes[h];p=++h&&p&&p[g]||(x=h=0)||d.pop();)if(1===p.nodeType&&++x&&p===t){l[e]=[B,h,x];break}}else if(y&&(p=t,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h),x===!1)for(;(p=++h&&p&&p[g]||(x=h=0)||d.pop())&&((a?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++x||(y&&(f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),l[e]=[B,x]),p!==t)););return x-=o,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var o,i=C.pseudos[e]||C.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return i[$]?i(n):i.length>1?(o=[e,e,"",n],C.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,o=i(e,n),s=o.length;s--;)r=ee(e,o[s]),e[r]=!(t[r]=o[s])}):function(e){return i(e,0,o)}):i}},pseudos:{not:r(function(e){var t=[],n=[],o=S(e.replace(ae,"$1"));return o[$]?r(function(e,t,n,r){for(var i,s=o(e,null,r,[]),a=e.length;a--;)(i=s[a])&&(e[a]=!(t[a]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){
+return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,be),function(t){return(t.textContent||t.innerText||j(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,be).toLowerCase(),function(t){var n;do if(n=F?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n2&&"ID"===(s=i[0]).type&&9===t.nodeType&&F&&C.relative[i[1].type]){if(t=(C.find.ID(s.matches[0].replace(xe,be),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=he.needsContext.test(e)?0:i.length;o--&&(s=i[o],!C.relative[a=s.type]);)if((u=C.find[a])&&(r=u(s.matches[0].replace(xe,be),ye.test(i[0].type)&&f(t.parentNode)||t))){if(i.splice(o,1),e=r.length&&h(i),!e)return K.apply(n,r),n;break}}return(c||S(e,l))(r,t,!F,n,!t||ye.test(e)&&f(t.parentNode)||t),n},T.sortStable=$.split("").sort(V).join("")===$,T.detectDuplicates=!!D,O(),T.sortDetached=o(function(e){return 1&e.compareDocumentPosition(L.createElement("fieldset"))}),o(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||i("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),T.attributes&&o(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||i("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),o(function(e){return null==e.getAttribute("disabled")})||i(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);de.find=xe,de.expr=xe.selectors,de.expr[":"]=de.expr.pseudos,de.uniqueSort=de.unique=xe.uniqueSort,de.text=xe.getText,de.isXMLDoc=xe.isXML,de.contains=xe.contains,de.escapeSelector=xe.escape;var be=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&de(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Te=de.expr.match.needsContext,Ce=/^:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:|)$/i,je=/^.[^:#\[\.,]*$/;de.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?de.find.matchesSelector(r,e)?[r]:[]:de.find.matches(e,de.grep(t,function(e){return 1===e.nodeType}))},de.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(de(e).filter(function(){for(t=0;t1?de.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Te.test(e)?de(e):e||[],!1).length}});var ke,Ee=/^(?:\s*()[^>]*|#([\w-]+))$/,Se=de.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||ke,"string"==typeof e){if(r=""===e[e.length-1]&&e.length>=3?[null,e,null]:Ee.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof de?t[0]:t,de.merge(this,de.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:te,!0)),Ce.test(r[1])&&de.isPlainObject(t))for(r in t)de.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return o=te.getElementById(r[2]),o&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):de.isFunction(e)?void 0!==n.ready?n.ready(e):e(de):de.makeArray(e,this)};Se.prototype=de.fn,ke=de(te);var Ne=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};de.fn.extend({has:function(e){var t=de(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&de.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?de.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?se.call(de(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(de.uniqueSort(de.merge(this.get(),de(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),de.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return be(e,"parentNode")},parentsUntil:function(e,t,n){return be(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return be(e,"nextSibling")},prevAll:function(e){return be(e,"previousSibling")},nextUntil:function(e,t,n){return be(e,"nextSibling",n)},prevUntil:function(e,t,n){return be(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return e.contentDocument||de.merge([],e.childNodes)}},function(e,t){de.fn[e]=function(n,r){var o=de.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=de.filter(r,o)),this.length>1&&(Ae[e]||de.uniqueSort(o),Ne.test(e)&&o.reverse()),this.pushStack(o)}});var qe=/[^\x20\t\r\n\f]+/g;de.Callbacks=function(e){e="string"==typeof e?s(e):de.extend({},e);var t,n,r,o,i=[],a=[],u=-1,c=function(){for(o=e.once,r=t=!0;a.length;u=-1)for(n=a.shift();++u-1;)i.splice(n,1),n-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return o=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return o=a=[],n||t||(i=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||c()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},de.extend({Deferred:function(t){var n=[["notify","progress",de.Callbacks("memory"),de.Callbacks("memory"),2],["resolve","done",de.Callbacks("once memory"),de.Callbacks("once memory"),0,"resolved"],["reject","fail",de.Callbacks("once memory"),de.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return de.Deferred(function(t){de.each(n,function(n,r){var o=de.isFunction(e[r[4]])&&e[r[4]];i[r[1]](function(){var e=o&&o.apply(this,arguments);e&&de.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,o?[e]:arguments)})}),e=null}).promise()},then:function(t,r,o){function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(){var e,f;if(!(t=s&&(r!==u&&(c=void 0,l=[e]),n.rejectWith(c,l))}};t?p():(de.Deferred.getStackHook&&(p.stackTrace=de.Deferred.getStackHook()),e.setTimeout(p))}}var s=0;return de.Deferred(function(e){n[0][3].add(i(0,e,de.isFunction(o)?o:a,e.notifyWith)),n[1][3].add(i(0,e,de.isFunction(t)?t:a)),n[2][3].add(i(0,e,de.isFunction(r)?r:u))}).promise()},promise:function(e){return null!=e?de.extend(e,o):o}},i={};return de.each(n,function(e,t){var s=t[2],a=t[5];o[t[1]]=s.add,a&&s.add(function(){r=a},n[3-e][2].disable,n[0][2].lock),s.add(t[3].fire),i[t[0]]=function(){return i[t[0]+"With"](this===i?void 0:this,arguments),this},i[t[0]+"With"]=s.fireWith}),o.promise(i),t&&t.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=re.call(arguments),i=de.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?re.call(arguments):n,--t||i.resolveWith(r,o)}};if(t0||Oe.resolveWith(te,[de]))}}),de.ready.then=Oe.then,"complete"===te.readyState||"loading"!==te.readyState&&!te.documentElement.doScroll?e.setTimeout(de.ready):(te.addEventListener("DOMContentLoaded",l),e.addEventListener("load",l));var Le=function(e,t,n,r,o,i,s){var a=0,u=e.length,c=null==n;if("object"===de.type(n)){o=!0;for(a in n)Le(e,t,a,n[a],!0,i,s)}else if(void 0!==r&&(o=!0,de.isFunction(r)||(s=!0),c&&(s?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(de(e),n)})),t))for(;a1,null,!0)},removeData:function(e){return this.each(function(){Re.remove(this,e)})}}),de.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Fe.get(e,t),n&&(!r||de.isArray(n)?r=Fe.access(e,t,de.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=de.queue(e,t),r=n.length,o=n.shift(),i=de._queueHooks(e,t),s=function(){de.dequeue(e,t)};"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,s,i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Fe.get(e,n)||Fe.access(e,n,{empty:de.Callbacks("once memory").add(function(){Fe.remove(e,[t+"queue",n])})})}}),de.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ve=/^$|\/(?:java|ecma)script/i,Ge={option:[1,"",""],thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};Ge.optgroup=Ge.option,Ge.tbody=Ge.tfoot=Ge.colgroup=Ge.caption=Ge.thead,Ge.th=Ge.td;var Ye=/x",pe.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Qe=te.documentElement,Je=/^key/,Ke=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ze=/^([^.]*)(?:\.(.+)|)/;de.event={global:{},add:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.get(e);if(m)for(n.handler&&(i=n,n=i.handler,o=i.selector),o&&de.find.matchesSelector(Qe,o),n.guid||(n.guid=de.guid++),(u=m.events)||(u=m.events={}),(s=m.handle)||(s=m.handle=function(t){return"undefined"!=typeof de&&de.event.triggered!==t.type?de.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],c=t.length;c--;)a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h&&(f=de.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=de.event.special[h]||{},l=de.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&de.expr.match.needsContext.test(o),namespace:d.join(".")},i),(p=u[h])||(p=u[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,d,s)!==!1||e.addEventListener&&e.addEventListener(h,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,l):p.push(l),de.event.global[h]=!0)},remove:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.hasData(e)&&Fe.get(e);if(m&&(u=m.events)){for(t=(t||"").match(qe)||[""],c=t.length;c--;)if(a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){for(f=de.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=i=p.length;i--;)l=p[i],!o&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(i,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||de.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)de.event.remove(e,h+t[c],n,r,!0);de.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,s,a=de.event.fix(e),u=new Array(arguments.length),c=(Fe.get(this,"events")||{})[a.type]||[],l=de.event.special[a.type]||{};for(u[0]=a,t=1;t=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||c.disabled!==!0)){for(i=[],s={},n=0;n-1:de.find(o,this,null,[c]).length),s[o]&&i.push(r);i.length&&a.push({elem:c,handlers:i})}return c=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,tt=/\s*$/g;de.extend({htmlPrefilter:function(e){return e.replace(et,"")},clone:function(e,t,n){var r,o,i,s,a=e.cloneNode(!0),u=de.contains(e.ownerDocument,e);if(!(pe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||de.isXMLDoc(e)))for(s=v(a),i=v(e),r=0,o=i.length;r0&&y(s,!u&&v(e,"script")),a},cleanData:function(e){for(var t,n,r,o=de.event.special,i=0;void 0!==(n=e[i]);i++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)o[r]?de.event.remove(n,r):de.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Re.expando]&&(n[Re.expando]=void 0)}}}),de.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?de.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.appendChild(e)}})},prepend:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(de.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return de.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!tt.test(e)&&!Ge[(Xe.exec(e)||["",""])[1].toLowerCase()]){e=de.htmlPrefilter(e);try{for(;n1)}}),de.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||de.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(de.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=de.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=de.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){de.fx.step[e.prop]?de.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[de.cssProps[e.prop]]&&!de.cssHooks[e.prop]?e.elem[e.prop]=e.now:de.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},de.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},de.fx=I.prototype.init,de.fx.step={};var ht,dt,gt=/^(?:toggle|show|hide)$/,mt=/queueHooks$/;de.Animation=de.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){de.isFunction(e)?(t=e,e=["*"]):e=e.match(qe);for(var n,r=0,o=e.length;r1)},removeAttr:function(e){return this.each(function(){de.removeAttr(this,e)})}}),de.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"==typeof e.getAttribute?de.prop(e,t,n):(1===i&&de.isXMLDoc(e)||(o=de.attrHooks[t.toLowerCase()]||(de.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void de.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:(r=de.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!pe.radioValue&&"radio"===t&&de.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(qe);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return t===!1?de.removeAttr(e,n):e.setAttribute(n,n),n}},de.each(de.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||de.find.attr;yt[t]=function(e,t,r){var o,i,s=t.toLowerCase();return r||(i=yt[s],yt[s]=o,o=null!=n(e,t,r)?s:null,yt[s]=i),o}});var xt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;de.fn.extend({prop:function(e,t){return Le(this,de.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[de.propFix[e]||e]})}}),de.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&de.isXMLDoc(e)||(t=de.propFix[t]||t,o=de.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=de.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),pe.optSelected||(de.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),de.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){de.propFix[this.toLowerCase()]=this}),de.fn.extend({addClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).addClass(e.call(this,t,X(this)))});if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)r.indexOf(" "+i+" ")-1;)r=r.replace(" "+i+" "," ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):de.isFunction(e)?this.each(function(n){de(this).toggleClass(e.call(this,n,X(this),t),t)}):this.each(function(){var t,r,o,i;if("string"===n)for(r=0,o=de(this),i=e.match(qe)||[];t=i[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||(t=X(this),t&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(X(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;de.fn.extend({val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=de.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=r?e.call(this,n,de(this).val()):e,null==o?o="":"number"==typeof o?o+="":de.isArray(o)&&(o=de.map(o,function(e){return null==e?"":e+""})),t=de.valHooks[this.type]||de.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return t=de.valHooks[o.type]||de.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),de.extend({valHooks:{option:{get:function(e){var t=de.find.attr(e,"value");return null!=t?t:z(de.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,s="select-one"===e.type,a=s?null:[],u=s?i+1:o.length;for(r=i-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),de.each(["radio","checkbox"],function(){de.valHooks[this]={set:function(e,t){if(de.isArray(t))return e.checked=de.inArray(de(e).val(),t)>-1}},pe.checkOn||(de.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Tt=/^(?:focusinfocus|focusoutblur)$/;de.extend(de.event,{trigger:function(t,n,r,o){var i,s,a,u,c,l,f,p=[r||te],h=ce.call(t,"type")?t.type:t,d=ce.call(t,"namespace")?t.namespace.split("."):[];if(s=a=r=r||te,3!==r.nodeType&&8!==r.nodeType&&!Tt.test(h+de.event.triggered)&&(h.indexOf(".")>-1&&(d=h.split("."),h=d.shift(),d.sort()),c=h.indexOf(":")1?u:f.bindType||h,l=(Fe.get(s,"events")||{})[t.type]&&Fe.get(s,"handle"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&He(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=h,o||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!He(r)||c&&de.isFunction(r[h])&&!de.isWindow(r)&&(a=r[c],a&&(r[c]=null),de.event.triggered=h,r[h](),de.event.triggered=void 0,a&&(r[c]=a)),t.result}},simulate:function(e,t,n){var r=de.extend(new de.Event,n,{type:e,isSimulated:!0});de.event.trigger(r,null,t)}}),de.fn.extend({trigger:function(e,t){return this.each(function(){de.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return de.event.trigger(e,t,n,!0)}}),de.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){de.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),de.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),pe.focusin="onfocusin"in e,pe.focusin||de.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){de.event.simulate(t,e.target,de.event.fix(e))};de.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=Fe.access(r,t);o||r.addEventListener(e,n,!0),Fe.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=Fe.access(r,t)-1;o?Fe.access(r,t,o):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Ct=e.location,jt=de.now(),kt=/\?/;de.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||de.error("Invalid XML: "+t),n};var Et=/\[\]$/,St=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;de.param=function(e,t){var n,r=[],o=function(e,t){var n=de.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(de.isArray(e)||e.jquery&&!de.isPlainObject(e))de.each(e,function(){o(this.name,this.value)});else for(n in e)V(n,e[n],t,o);return r.join("&")},de.fn.extend({serialize:function(){return de.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=de.prop(this,"elements");return e?de.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!de(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=de(this).val();return null==n?null:de.isArray(n)?de.map(n,function(e){return{name:t.name,value:e.replace(St,"\r\n")}}):{name:t.name,value:n.replace(St,"\r\n")}}).get()}});var qt=/%20/g,Dt=/#.*$/,Ot=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ft=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Pt={},Mt="*/".concat("*"),$t=te.createElement("a");$t.href=Ct.href,de.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Ht.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":de.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,de.ajaxSettings),t):Q(de.ajaxSettings,e)},ajaxPrefilter:G(It),ajaxTransport:G(Pt),ajax:function(t,n){function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=void 0,s=a||"",C.readyState=t>0?4:0,c=t>=200&&t0&&(u=e.setTimeout(function(){C.abort("timeout")},d.timeout));try{l=!1,o.send(b,r)}catch(e){if(l)throw e;r(-1,e)}}else r(-1,"No Transport");return C},getJSON:function(e,t,n){return de.get(e,t,n,"json")},getScript:function(e,t){return de.get(e,void 0,t,"script")}}),de.each(["get","post"],function(e,t){de[t]=function(e,n,r,o){return de.isFunction(n)&&(o=o||r,r=n,n=void 0),de.ajax(de.extend({url:e,type:t,dataType:o,data:n,success:r},de.isPlainObject(e)&&e))}}),de._evalUrl=function(e){return de.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},de.fn.extend({wrapAll:function(e){var t;return this[0]&&(de.isFunction(e)&&(e=e.call(this[0])),t=de(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return de.isFunction(e)?this.each(function(t){de(this).wrapInner(e.call(this,t))}):this.each(function(){var t=de(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=de.isFunction(e);return this.each(function(n){de(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){de(this).replaceWith(this.childNodes)}),this}}),de.expr.pseudos.hidden=function(e){return!de.expr.pseudos.visible(e)},de.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},de.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},Bt=de.ajaxSettings.xhr();pe.cors=!!Bt&&"withCredentials"in Bt,pe.ajax=Bt=!!Bt,de.ajaxTransport(function(t){var n,r;if(pe.cors||Bt&&!t.crossDomain)return{send:function(o,i){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(s in o)a.setRequestHeader(s,o[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?i(0,"error"):i(a.status,a.statusText):i(Wt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),de.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),de.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return de.globalEval(e),e}}}),de.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),de.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,o){t=de("").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),te.head.appendChild(t[0])},abort:function(){n&&n()}}}});var _t=[],Ut=/(=)\?(?=&|$)|\?\?/;de.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=_t.pop()||de.expando+"_"+jt++;return this[e]=!0,e}}),de.ajaxPrefilter("json jsonp",function(t,n,r){var o,i,s,a=t.jsonp!==!1&&(Ut.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(t.data)&&"data");if(a||"jsonp"===t.dataTypes[0])return o=t.jsonpCallback=de.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(Ut,"$1"+o):t.jsonp!==!1&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+o),t.converters["script json"]=function(){return s||de.error(o+" was not called"),s[0]},t.dataTypes[0]="json",i=e[o],e[o]=function(){s=arguments},r.always(function(){void 0===i?de(e).removeProp(o):e[o]=i,t[o]&&(t.jsonpCallback=n.jsonpCallback,_t.push(o)),s&&de.isFunction(i)&&i(s[0]),s=i=void 0}),"script"}),pe.createHTMLDocument=function(){var e=te.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),de.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var r,o,i;return t||(pe.createHTMLDocument?(t=te.implementation.createHTMLDocument(""),r=t.createElement("base"),r.href=te.location.href,t.head.appendChild(r)):t=te),o=Ce.exec(e),i=!n&&[],o?[t.createElement(o[1])]:(o=x([e],t,i),i&&i.length&&de(i).remove(),de.merge([],o.childNodes))},de.fn.load=function(e,t,n){var r,o,i,s=this,a=e.indexOf(" ");return a>-1&&(r=z(e.slice(a)),e=e.slice(0,a)),de.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(o="POST"),s.length>0&&de.ajax({url:e,type:o||"GET",dataType:"html",data:t}).done(function(e){i=arguments,s.html(r?de("<div>").append(de.parseHTML(e)).find(r):e)}).always(n&&function(e,t){s.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},de.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){de.fn[t]=function(e){return this.on(t,e)}}),de.expr.pseudos.animated=function(e){return de.grep(de.timers,function(t){return e===t.elem}).length},de.offset={setOffset:function(e,t,n){var r,o,i,s,a,u,c,l=de.css(e,"position"),f=de(e),p={};"static"===l&&(e.style.position="relative"),a=f.offset(),i=de.css(e,"top"),u=de.css(e,"left"),c=("absolute"===l||"fixed"===l)&&(i+u).indexOf("auto")>-1,c?(r=f.position(),s=r.top,o=r.left):(s=parseFloat(i)||0,o=parseFloat(u)||0),de.isFunction(t)&&(t=t.call(e,n,de.extend({},a))),null!=t.top&&(p.top=t.top-a.top+s),null!=t.left&&(p.left=t.left-a.left+o),"using"in t?t.using.call(e,p):f.css(p)}},de.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){de.offset.setOffset(this,e,t)});var t,n,r,o,i=this[0];if(i)return i.getClientRects().length?(r=i.getBoundingClientRect(),r.width||r.height?(o=i.ownerDocument,n=Z(o),t=o.documentElement,{top:r.top+n.pageYOffset-t.clientTop,left:r.left+n.pageXOffset-t.clientLeft}):r):{top:0,left:0}},position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===de.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),de.nodeName(e[0],"html")||(r=e.offset()),r={top:r.top+de.css(e[0],"borderTopWidth",!0),left:r.left+de.css(e[0],"borderLeftWidth",!0)}),{top:t.top-r.top-de.css(n,"marginTop",!0),left:t.left-r.left-de.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===de.css(e,"position");)e=e.offsetParent;return e||Qe})}}),de.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;de.fn[e]=function(r){return Le(this,function(e,r,o){var i=Z(e);return void 0===o?i?i[t]:e[r]:void(i?i.scrollTo(n?i.pageXOffset:o,n?o:i.pageYOffset):e[r]=o)},e,r,arguments.length)}}),de.each(["top","left"],function(e,t){de.cssHooks[t]=O(pe.pixelPosition,function(e,n){if(n)return n=D(e,t),st.test(n)?de(e).position()[t]+"px":n})}),de.each({Height:"height",Width:"width"},function(e,t){de.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){de.fn[r]=function(o,i){var s=arguments.length&&(n||"boolean"!=typeof o),a=n||(o===!0||i===!0?"margin":"border");return Le(this,function(t,n,o){var i;return de.isWindow(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===o?de.css(t,n,a):de.style(t,n,o,a)},t,s?o:void 0,s)}})}),de.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),de.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return de});var zt=e.jQuery,Xt=e.$;return de.noConflict=function(t){return e.$===de&&(e.$=Xt),t&&e.jQuery===de&&(e.jQuery=zt),de},t||(e.jQuery=e.$=de),de})},{}],2:[function(e,t,n){(function(e){function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}var o=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,i=function(e){return o.exec(e).slice(1)};n.resolve=function(){for(var n="",o=!1,i=arguments.length-1;i>=-1&&!o;i--){var s=i>=0?arguments[i]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(n=s+"/"+n,o="/"===s.charAt(0))}return n=t(r(n.split("/"),function(e){return!!e}),!o).join("/"),(o?"/":"")+n||"."},n.normalize=function(e){var o=n.isAbsolute(e),i="/"===s(e,-1);return e=t(r(e.split("/"),function(e){return!!e}),!o).join("/"),e||o||(e="."),e&&i&&(e+="/"),(o?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var o=r(e.split("/")),i=r(t.split("/")),s=Math.min(o.length,i.length),a=s,u=0;u<s;u++)if(o[u]!==i[u]){a=u;break}for(var c=[],u=a;u<o.length;u++)c.push("..");return c=c.concat(i.slice(a)),c.join("/")},n.sep="/",n.delimiter=":",n.dirname=function(e){var t=i(e),n=t[0],r=t[1];return n||r?(r&&(r=r.substr(0,r.length-1)),n+r):"."},n.basename=function(e,t){var n=i(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},n.extname=function(e){return i(e)[3]};var s="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,e("_process"))},{_process:3}],3:[function(e,t,n){function r(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(f===setTimeout)return setTimeout(e,0);if((f===r||!f)&&setTimeout)return f=setTimeout,setTimeout(e,0);try{return f(e,0)}catch(t){try{return f.call(null,e,0)}catch(t){return f.call(this,e,0)}}}function s(e){if(p===clearTimeout)return clearTimeout(e);if((p===o||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(e);try{return p(e)}catch(t){try{return p.call(null,e)}catch(t){return p.call(this,e)}}}function a(){m&&d&&(m=!1,d.length?g=d.concat(g):v=-1,g.length&&u())}function u(){if(!m){var e=i(a);m=!0;for(var t=g.length;t;){for(d=g,g=[];++v<t;)d&&d[v].run();v=-1,t=g.length}d=null,m=!1,s(e)}}function c(e,t){this.fun=e,this.array=t}function l(){}var f,p,h=t.exports={};!function(){try{f="function"==typeof setTimeout?setTimeout:r}catch(e){f=r}try{p="function"==typeof clearTimeout?clearTimeout:o}catch(e){p=o}}();var d,g=[],m=!1,v=-1;h.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];g.push(new c(e,t)),1!==g.length||m||i(u)},c.prototype.run=function(){this.fun.apply(null,this.array)},h.title="browser",h.browser=!0,h.env={},h.argv=[],h.version="",h.versions={},h.on=l,h.addListener=l,h.once=l,h.off=l,h.removeListener=l,h.removeAllListeners=l,h.emit=l,h.prependListener=l,h.prependOnceListener=l,h.listeners=function(e){return[]},h.binding=function(e){throw new Error("process.binding is not supported")},h.cwd=function(){return"/"},h.chdir=function(e){throw new Error("process.chdir is not supported")},h.umask=function(){return 0}},{}],4:[function(e,t,n){(function(e){!function(r){function o(e){throw new RangeError(L[e])}function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function s(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),e=e.replace(O,".");var o=e.split("."),s=i(o,t).join(".");return r+s}function a(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t>=55296&&t<=56319&&o<i?(n=e.charCodeAt(o++),56320==(64512&n)?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),o--)):r.push(t);return r}function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,t+=R(e>>>10&1023|55296),e=56320|1023&e),t+=R(e)}).join("")}function c(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:T}function l(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*j>>1;r+=T)e=F(e/H);return F(r+(H+1)*e/(e+k))}function p(e){var t,n,r,i,s,a,l,p,h,d,g=[],m=e.length,v=0,y=N,x=S;for(n=e.lastIndexOf(A),n<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&o("not-basic"),g.push(e.charCodeAt(r));for(i=n>0?n+1:0;i<m;){for(s=v,a=1,l=T;i>=m&&o("invalid-input"),p=c(e.charCodeAt(i++)),(p>=T||p>F((w-v)/a))&&o("overflow"),v+=p*a,h=l<=x?C:l>=x+j?j:l-x,!(p<h);l+=T)d=T-h,a>F(w/d)&&o("overflow"),a*=d;t=g.length+1,x=f(v-s,t,0==s),F(v/t)>w-y&&o("overflow"),y+=F(v/t),v%=t,g.splice(v++,0,y)}return u(g)}function h(e){var t,n,r,i,s,u,c,p,h,d,g,m,v,y,x,b=[];for(e=a(e),m=e.length,t=N,n=0,s=S,u=0;u<m;++u)g=e[u],g<128&&b.push(R(g));for(r=i=b.length,i&&b.push(A);r<m;){for(c=w,u=0;u<m;++u)g=e[u],g>=t&&g<c&&(c=g);for(v=r+1,c-t>F((w-n)/v)&&o("overflow"),n+=(c-t)*v,t=c,u=0;u<m;++u)if(g=e[u],g<t&&++n>w&&o("overflow"),g==t){for(p=n,h=T;d=h<=s?C:h>=s+j?j:h-s,!(p<d);h+=T)x=p-d,y=T-d,b.push(R(l(d+x%y,0))),p=F(x/y);b.push(R(l(p,0))),s=f(n,v,r==i),n=0,++r}++n,++t}return b.join("")}function d(e){return s(e,function(e){return q.test(e)?p(e.slice(4).toLowerCase()):e})}function g(e){return s(e,function(e){return D.test(e)?"xn--"+h(e):e})}var m="object"==typeof n&&n&&!n.nodeType&&n,v="object"==typeof t&&t&&!t.nodeType&&t,y="object"==typeof e&&e;y.global!==y&&y.window!==y&&y.self!==y||(r=y);var x,b,w=2147483647,T=36,C=1,j=26,k=38,E=700,S=72,N=128,A="-",q=/^xn--/,D=/[^\x20-\x7E]/,O=/[\x2E\u3002\uFF0E\uFF61]/g,L={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},H=T-C,F=Math.floor,R=String.fromCharCode;if(x={version:"1.4.1",ucs2:{decode:a,encode:u},decode:p,encode:h,toASCII:g,toUnicode:d},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return x});else if(m&&v)if(t.exports==m)v.exports=x;else for(b in x)x.hasOwnProperty(b)&&(m[b]=x[b]);else r.punycode=x}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],5:[function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,n,i){t=t||"&",n=n||"=";var s={};if("string"!=typeof e||0===e.length)return s;var a=/\+/g;e=e.split(t);var u=1e3;i&&"number"==typeof i.maxKeys&&(u=i.maxKeys);var c=e.length;u>0&&c>u&&(c=u);for(var l=0;l<c;++l){var f,p,h,d,g=e[l].replace(a,"%20"),m=g.indexOf(n);m>=0?(f=g.substr(0,m),p=g.substr(m+1)):(f=g,p=""),h=decodeURIComponent(f),d=decodeURIComponent(p),r(s,h)?o(s[h])?s[h].push(d):s[h]=[s[h],d]:s[h]=d}return s};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],6:[function(e,t,n){"use strict";function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var o=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,n,a){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?r(s(e),function(s){var a=encodeURIComponent(o(s))+n;return i(e[s])?r(e[s],function(e){return a+encodeURIComponent(o(e))}).join(t):a+encodeURIComponent(o(e[s]))}).join(t):a?encodeURIComponent(o(a))+n+encodeURIComponent(o(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},s=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},{}],7:[function(e,t,n){"use strict";n.decode=n.parse=e("./decode"),n.encode=n.stringify=e("./encode")},{"./decode":5,"./encode":6}],8:[function(e,t,n){"use strict";function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function o(e,t,n){
+if(e&&c.isObject(e)&&e instanceof r)return e;var o=new r;return o.parse(e,t,n),o}function i(e){return c.isString(e)&&(e=o(e)),e instanceof r?e.format():r.prototype.format.call(e)}function s(e,t){return o(e,!1,!0).resolve(t)}function a(e,t){return e?o(e,!1,!0).resolveObject(t):t}var u=e("punycode"),c=e("./util");n.parse=o,n.resolve=s,n.resolveObject=a,n.format=i,n.Url=r;var l=/^([a-z0-9.+-]+:)/i,f=/:[0-9]*$/,p=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,h=["<",">",'"',"`"," ","\r","\n","\t"],d=["{","}","|","\\","^","`"].concat(h),g=["'"].concat(d),m=["%","/","?",";","#"].concat(g),v=["/","?","#"],y=255,x=/^[+a-z0-9A-Z_-]{0,63}$/,b=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,w={javascript:!0,"javascript:":!0},T={javascript:!0,"javascript:":!0},C={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},j=e("querystring");r.prototype.parse=function(e,t,n){if(!c.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var r=e.indexOf("?"),o=r!==-1&&r<e.indexOf("#")?"?":"#",i=e.split(o),s=/\\/g;i[0]=i[0].replace(s,"/"),e=i.join(o);var a=e;if(a=a.trim(),!n&&1===e.split("#").length){var f=p.exec(a);if(f)return this.path=a,this.href=a,this.pathname=f[1],f[2]?(this.search=f[2],t?this.query=j.parse(this.search.substr(1)):this.query=this.search.substr(1)):t&&(this.search="",this.query={}),this}var h=l.exec(a);if(h){h=h[0];var d=h.toLowerCase();this.protocol=d,a=a.substr(h.length)}if(n||h||a.match(/^\/\/[^@\/]+@[^@\/]+/)){var k="//"===a.substr(0,2);!k||h&&T[h]||(a=a.substr(2),this.slashes=!0)}if(!T[h]&&(k||h&&!C[h])){for(var E=-1,S=0;S<v.length;S++){var N=a.indexOf(v[S]);N!==-1&&(E===-1||N<E)&&(E=N)}var A,q;q=E===-1?a.lastIndexOf("@"):a.lastIndexOf("@",E),q!==-1&&(A=a.slice(0,q),a=a.slice(q+1),this.auth=decodeURIComponent(A)),E=-1;for(var S=0;S<m.length;S++){var N=a.indexOf(m[S]);N!==-1&&(E===-1||N<E)&&(E=N)}E===-1&&(E=a.length),this.host=a.slice(0,E),a=a.slice(E),this.parseHost(),this.hostname=this.hostname||"";var D="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!D)for(var O=this.hostname.split(/\./),S=0,L=O.length;S<L;S++){var H=O[S];if(H&&!H.match(x)){for(var F="",R=0,I=H.length;R<I;R++)F+=H.charCodeAt(R)>127?"x":H[R];if(!F.match(x)){var P=O.slice(0,S),M=O.slice(S+1),$=H.match(b);$&&(P.push($[1]),M.unshift($[2])),M.length&&(a="/"+M.join(".")+a),this.hostname=P.join(".");break}}}this.hostname.length>y?this.hostname="":this.hostname=this.hostname.toLowerCase(),D||(this.hostname=u.toASCII(this.hostname));var W=this.port?":"+this.port:"",B=this.hostname||"";this.host=B+W,this.href+=this.host,D&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!w[d])for(var S=0,L=g.length;S<L;S++){var _=g[S];if(a.indexOf(_)!==-1){var U=encodeURIComponent(_);U===_&&(U=escape(_)),a=a.split(_).join(U)}}var z=a.indexOf("#");z!==-1&&(this.hash=a.substr(z),a=a.slice(0,z));var X=a.indexOf("?");if(X!==-1?(this.search=a.substr(X),this.query=a.substr(X+1),t&&(this.query=j.parse(this.query)),a=a.slice(0,X)):t&&(this.search="",this.query={}),a&&(this.pathname=a),C[d]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var W=this.pathname||"",V=this.search||"";this.path=W+V}return this.href=this.format(),this},r.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",o=!1,i="";this.host?o=e+this.host:this.hostname&&(o=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&c.isObject(this.query)&&Object.keys(this.query).length&&(i=j.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||C[t])&&o!==!1?(o="//"+(o||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):o||(o=""),r&&"#"!==r.charAt(0)&&(r="#"+r),s&&"?"!==s.charAt(0)&&(s="?"+s),n=n.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),s=s.replace("#","%23"),t+o+n+s+r},r.prototype.resolve=function(e){return this.resolveObject(o(e,!1,!0)).format()},r.prototype.resolveObject=function(e){if(c.isString(e)){var t=new r;t.parse(e,!1,!0),e=t}for(var n=new r,o=Object.keys(this),i=0;i<o.length;i++){var s=o[i];n[s]=this[s]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var a=Object.keys(e),u=0;u<a.length;u++){var l=a[u];"protocol"!==l&&(n[l]=e[l])}return C[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!C[e.protocol]){for(var f=Object.keys(e),p=0;p<f.length;p++){var h=f[p];n[h]=e[h]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||T[e.protocol])n.pathname=e.pathname;else{for(var d=(e.pathname||"").split("/");d.length&&!(e.host=d.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==d[0]&&d.unshift(""),d.length<2&&d.unshift(""),n.pathname=d.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var g=n.pathname||"",m=n.search||"";n.path=g+m}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var v=n.pathname&&"/"===n.pathname.charAt(0),y=e.host||e.pathname&&"/"===e.pathname.charAt(0),x=y||v||n.host&&e.pathname,b=x,w=n.pathname&&n.pathname.split("/")||[],d=e.pathname&&e.pathname.split("/")||[],j=n.protocol&&!C[n.protocol];if(j&&(n.hostname="",n.port=null,n.host&&(""===w[0]?w[0]=n.host:w.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===d[0]?d[0]=e.host:d.unshift(e.host)),e.host=null),x=x&&(""===d[0]||""===w[0])),y)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,w=d;else if(d.length)w||(w=[]),w.pop(),w=w.concat(d),n.search=e.search,n.query=e.query;else if(!c.isNullOrUndefined(e.search)){if(j){n.hostname=n.host=w.shift();var k=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");k&&(n.auth=k.shift(),n.host=n.hostname=k.shift())}return n.search=e.search,n.query=e.query,c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var E=w.slice(-1)[0],S=(n.host||e.host||w.length>1)&&("."===E||".."===E)||""===E,N=0,A=w.length;A>=0;A--)E=w[A],"."===E?w.splice(A,1):".."===E?(w.splice(A,1),N++):N&&(w.splice(A,1),N--);if(!x&&!b)for(;N--;N)w.unshift("..");!x||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),S&&"/"!==w.join("/").substr(-1)&&w.push("");var q=""===w[0]||w[0]&&"/"===w[0].charAt(0);if(j){n.hostname=n.host=q?"":w.length?w.shift():"";var k=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");k&&(n.auth=k.shift(),n.host=n.hostname=k.shift())}return x=x||n.host&&w.length,x&&!q&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},r.prototype.parseHost=function(){var e=this.host,t=f.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":9,punycode:4,querystring:7}],9:[function(e,t,n){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],10:[function(e,t,n){var r=e("jquery");t.exports=r({})},{jquery:1}],11:[function(e,t,n){var r=e("jquery"),o=e("./events"),i=e("./storage"),s=e("./page"),a=!1,u=window.gitbook||[],c={events:o,page:s,state:s.getState(),storage:i,push:function(e){a?e():u.push(e)}},l={gitbook:c,jquery:r};window.gitbook=c,window.$=r,window.jQuery=r,window.require=function(e,t){e=e.map(function(e){if(e=e.toLowerCase(),!l[e])throw new Error("GitBook module "+e+" doesn't exist");return l[e]}),t.apply(null,e)},r(document).ready(function(){a=!0,r.each(u,function(e,t){t()})})},{"./events":10,"./page":12,"./storage":13,jquery:1}],12:[function(e,t,n){function r(e){console.log("page has changed",e),o(e),l||(l=!0,c.trigger("start",e.config.pluginsConfig)),c.trigger("page.change")}function o(e){f.page=e.page,f.file=e.file,f.gitbook=e.gitbook,f.config=e.config,f.basePath=e.basePath,f.book=e.book,f.$book=s(".book"),f.revision=f.gitbook.time,f.level=f.page.level,f.filepath=f.file.path,f.chapterTitle=f.page.title,f.innerLanguage=f.book.language||"",f.root=a.resolve(location.protocol+"//"+location.host,u.dirname(u.resolve(location.pathname.replace(/\/$/,"/index.html"),f.basePath))).replace(/\/?$/,"/"),f.bookRoot=f.innerLanguage?a.resolve(f.root,".."):f.root}function i(){return f}var s=e("jquery"),a=e("url"),u=e("path"),c=e("./events"),l=!1,f={};t.exports={hasChanged:r,setState:o,getState:i}},{"./events":10,jquery:1,path:2,url:8}],13:[function(e,t,n){var r="";t.exports={setBaseKey:function(e){r=e},set:function(e,t){e=r+":"+e;try{localStorage[e]=JSON.stringify(t)}catch(e){}},get:function(e,t){var n;e=r+":"+e;try{n=localStorage[e]}catch(e){}if(void 0===n)return t;try{var o=JSON.parse(n);return null==o?t:o}catch(e){return n||t}},remove:function(e){e=r+":"+e;try{localStorage.removeItem(e)}catch(e){}}}},{}]},{},[11]);
</code></pre>
</div>
</div>
<div class="changelog--file -added">
<span class="changelog--badge">added</span>
<a class="changelog--filename" target="_self" href="/_book/gitbook/images/apple-touch-icon-precomposed-152.png">_book/gitbook/images/apple-touch-icon-precomposed-152.png</a>
</div>
<div class="changelog--file -added">
<span class="changelog--badge">added</span>
<a class="changelog--filename" target="_self" href="/_book/gitbook/images/favicon.ico">_book/gitbook/images/favicon.ico</a>
</div>
<div class="changelog--file -added">
<span class="changelog--badge">added</span>
<a class="changelog--filename" target="_self" href="/_book/gitbook/style.css">_book/gitbook/style.css</a>
<div class="changelog--change -show-less" id='ba350d4__book_gitbook_style_css'>
<a class="changelog--disclosure" onclick="changeLogToggle('ba350d4__book_gitbook_style_css')">
<span class="-more">Show More</span>
<span class="-less">Show Less</span>
</a>
<pre><code class="lang-diff">
+/*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.link-inherit{color:inherit}.link-inherit:focus,.link-inherit:hover{color:inherit}.hidden{display:none}.alert{padding:15px;margin-bottom:20px;color:#444;background:#eee;border-bottom:5px solid #ddd}.alert-success{background:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-info{background:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-danger{background:#f2dede;border-color:#ebccd1;color:#a94442}.alert-warning{background:#fcf8e3;border-color:#faebcc;color:#8a6d3b}/*!
+ * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome/fontawesome-webfont.eot?v=4.6.3);src:url(fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.6.3) format('embedded-opentype'),url(fonts/fontawesome/fontawesome-webfont.woff2?v=4.6.3) format('woff2'),url(fonts/fontawesome/fontawesome-webfont.woff?v=4.6.3) format('woff'),url(fonts/fontawesome/fontawesome-webfont.ttf?v=4.6.3) format('truetype'),url(fonts/fontawesome/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}/*!
+ * Preboot v2
+ *
+ * Open sourced under MIT license by @mdo.
+ * Some variables and mixins from Bootstrap (Apache 2 license).
+ */.book-langs-index{width:100%;height:100%;padding:40px 0;margin:0;overflow:auto}@media (max-width:600px){.book-langs-index{padding:0}}.book-langs-index .inner{max-width:600px;width:100%;margin:0 auto;padding:30px;background:#fff;border-radius:3px}.book-langs-index .inner h3{margin:0}.book-langs-index .inner .languages{list-style:none;padding:20px 30px;margin-top:20px;border-top:1px solid #eee}.book-langs-index .inner .languages:after,.book-langs-index .inner .languages:before{content:" ";display:table;line-height:0}.book-langs-index .inner .languages:after{clear:both}.book-langs-index .inner .languages li{width:50%;float:left;padding:10px 5px;font-size:16px}@media (max-width:600px){.book-langs-index .inner .languages li{width:100%;max-width:100%}}.book-header{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;overflow:visible;height:50px;padding:0 8px;z-index:2;font-size:.85em;color:#7e888b;background:0 0}.book-header .btn{display:block;height:50px;padding:0 15px;border-bottom:none;color:#ccc;text-transform:uppercase;line-height:50px;-webkit-box-shadow:none!important;box-shadow:none!important;position:relative;font-size:14px}.book-header .btn:hover{position:relative;text-decoration:none;color:#444;background:0 0}.book-header .btn:focus{outline:0}.book-header h1{margin:0;font-size:20px;font-weight:200;text-align:center;line-height:50px;opacity:0;-webkit-transition:opacity ease .4s;-moz-transition:opacity ease .4s;-o-transition:opacity ease .4s;transition:opacity ease .4s;padding-left:200px;padding-right:200px;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-o-transition:opacity .2s ease;transition:opacity .2s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-header h1 a,.book-header h1 a:hover{color:inherit;text-decoration:none}@media (max-width:1000px){.book-header h1{display:none}}.book-header h1 i{display:none}.book-header:hover h1{opacity:1}.book.is-loading .book-header h1 i{display:inline-block}.book.is-loading .book-header h1 a{display:none}.dropdown{position:relative}.dropdown-menu{position:absolute;top:100%;left:0;z-index:100;display:none;float:left;min-width:160px;padding:0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fafafa;border:1px solid rgba(0,0,0,.07);border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.open{display:block}.dropdown-menu.dropdown-left{left:auto;right:4%}.dropdown-menu.dropdown-left .dropdown-caret{right:14px;left:auto}.dropdown-menu .dropdown-caret{position:absolute;top:-8px;left:14px;width:18px;height:10px;float:left;overflow:hidden}.dropdown-menu .dropdown-caret .caret-outer{position:absolute;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid rgba(0,0,0,.1);height:auto;left:0;top:0;width:auto;display:inline-block;margin-left:-1px}.dropdown-menu .dropdown-caret .caret-inner{position:absolute;display:inline-block;margin-top:-1px;top:0;top:1px;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid #fafafa}.dropdown-menu .buttons{border-bottom:1px solid rgba(0,0,0,.07)}.dropdown-menu .buttons:after,.dropdown-menu .buttons:before{content:" ";display:table;line-height:0}.dropdown-menu .buttons:after{clear:both}.dropdown-menu .buttons:last-child{border-bottom:none}.dropdown-menu .buttons .button{border:0;background-color:transparent;color:#a6a6a6;width:100%;text-align:center;float:left;line-height:1.42857143;padding:8px 4px}.dropdown-menu .buttons .button:hover{color:#444}.dropdown-menu .buttons .button:focus,.dropdown-menu .buttons .button:hover{outline:0}.dropdown-menu .buttons .button.size-2{width:50%}.dropdown-menu .buttons .button.size-3{width:33%}.book-summary{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;position:absolute;top:0;left:-300px;bottom:0;z-index:1;overflow-y:auto;width:300px;color:#364149;background:#fafafa;border-right:1px solid rgba(0,0,0,.07);-webkit-transition:left 250ms ease;-moz-transition:left 250ms ease;-o-transition:left 250ms ease;transition:left 250ms ease}.book-summary ul.summary{list-style:none;margin:0;padding:0;-webkit-transition:top .5s ease;-moz-transition:top .5s ease;-o-transition:top .5s ease;transition:top .5s ease}.book-summary ul.summary li{list-style:none}.book-summary ul.summary li.header{padding:10px 15px;padding-top:20px;text-transform:uppercase;color:#939da3}.book-summary ul.summary li.divider{height:1px;margin:7px 0;overflow:hidden;background:rgba(0,0,0,.07)}.book-summary ul.summary li i.fa-check{display:none;position:absolute;right:9px;top:16px;font-size:9px;color:#3c3}.book-summary ul.summary li.done>a{color:#364149;font-weight:400}.book-summary ul.summary li.done>a i{display:inline}.book-summary ul.summary li a,.book-summary ul.summary li span{display:block;padding:10px 15px;border-bottom:none;color:#364149;background:0 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative}.book-summary ul.summary li a:hover{text-decoration:underline}.book-summary ul.summary li a:focus{outline:0}.book-summary ul.summary li.active>a{color:#008cff;background:0 0;text-decoration:none}.book-summary ul.summary li ul{padding-left:20px}@media (max-width:600px){.book-summary{width:calc(100% - 60px);bottom:0;left:-100%}}.book.with-summary .book-summary{left:0}.book.without-animation .book-summary{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.book{position:relative;width:100%;height:100%}@media (min-width:600px){.book.with-summary .book-body{left:300px}}@media (max-width:600px){.book.with-summary{overflow:hidden}.book.with-summary .book-body{-webkit-transform:translate(calc(100% - 60px),0);-moz-transform:translate(calc(100% - 60px),0);-ms-transform:translate(calc(100% - 60px),0);-o-transform:translate(calc(100% - 60px),0);transform:translate(calc(100% - 60px),0)}}.book.without-animation .book-body{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.book-body{position:absolute;top:0;right:0;left:0;bottom:0;overflow-y:auto;color:#000;background:#fff;-webkit-transition:left 250ms ease;-moz-transition:left 250ms ease;-o-transition:left 250ms ease;transition:left 250ms ease}.book-body .body-inner{position:absolute;top:0;right:0;left:0;bottom:0;overflow-y:auto}@media (max-width:1240px){.book-body{-webkit-transition:-webkit-transform 250ms ease;-moz-transition:-moz-transform 250ms ease;-o-transition:-o-transform 250ms ease;transition:transform 250ms ease;padding-bottom:20px}.book-body .body-inner{position:static;min-height:calc(100% - 50px)}}.page-wrapper{position:relative;outline:0}.page-inner{position:relative;max-width:800px;margin:0 auto;padding:20px 15px 40px 15px}.page-inner .btn-group .btn{border-radius:0;background:#eee;border:0}.buttons:after,.buttons:before{content:" ";display:table;line-height:0}.buttons:after{clear:both}.button{border:0;background-color:transparent;background:#eee;color:#666;width:100%;text-align:center;float:left;line-height:1.42857143;padding:8px 4px}.button:hover{color:#444}.button:focus,.button:hover{outline:0}.button.size-2{width:50%}.button.size-3{width:33%}.markdown-section{display:block;word-wrap:break-word;overflow:hidden;color:#333;line-height:1.7;text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%}.markdown-section *{box-sizing:border-box;-webkit-box-sizing:border-box;font-size:inherit}.markdown-section>:first-child{margin-top:0!important}.markdown-section>:last-child{margin-bottom:0!important}.markdown-section blockquote,.markdown-section code,.markdown-section figure,.markdown-section img,.markdown-section pre,.markdown-section table,.markdown-section tr{page-break-inside:avoid}.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section h5,.markdown-section p{orphans:3;widows:3}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section h5{page-break-after:avoid}.markdown-section b,.markdown-section strong{font-weight:700}.markdown-section em{font-style:italic}.markdown-section blockquote,.markdown-section dl,.markdown-section ol,.markdown-section p,.markdown-section table,.markdown-section ul{margin-top:0;margin-bottom:.85em}.markdown-section a{color:#4183c4;text-decoration:none;background:0 0}.markdown-section a:active,.markdown-section a:focus,.markdown-section a:hover{outline:0;text-decoration:underline}.markdown-section img{border:0;max-width:100%}.markdown-section hr{height:4px;padding:0;margin:1.7em 0;overflow:hidden;background-color:#e7e7e7;border:none}.markdown-section hr:after,.markdown-section hr:before{display:table;content:" "}.markdown-section hr:after{clear:both}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section h5,.markdown-section h6{margin-top:1.275em;margin-bottom:.85em;font-weight:700}.markdown-section h1{font-size:2em}.markdown-section h2{font-size:1.75em}.markdown-section h3{font-size:1.5em}.markdown-section h4{font-size:1.25em}.markdown-section h5{font-size:1em}.markdown-section h6{font-size:1em;color:#777}.markdown-section code,.markdown-section pre{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;direction:ltr;margin:0;padding:0;border:none;color:inherit}.markdown-section pre{overflow:auto;word-wrap:normal;margin:0;padding:.85em 1em;margin-bottom:1.275em;background:#f7f7f7}.markdown-section pre>code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;font-size:.85em;white-space:pre;background:0 0}.markdown-section pre>code:after,.markdown-section pre>code:before{content:normal}.markdown-section code{padding:.2em;margin:0;font-size:.85em;background-color:#f7f7f7}.markdown-section code:after,.markdown-section code:before{letter-spacing:-.2em;content:"\00a0"}.markdown-section table{display:table;width:100%;border-collapse:collapse;border-spacing:0;overflow:auto}.markdown-section table td,.markdown-section table th{padding:6px 13px;border:1px solid #ddd}.markdown-section table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-section table tr:nth-child(2n){background-color:#f8f8f8}.markdown-section table th{font-weight:700}.markdown-section ol,.markdown-section ul{padding:0;margin:0;margin-bottom:.85em;padding-left:2em}.markdown-section ol ol,.markdown-section ol ul,.markdown-section ul ol,.markdown-section ul ul{margin-top:0;margin-bottom:0}.markdown-section ol ol{list-style-type:lower-roman}.markdown-section blockquote{margin:0;margin-bottom:.85em;padding:0 15px;color:#858585;border-left:4px solid #e5e5e5}.markdown-section blockquote:first-child{margin-top:0}.markdown-section blockquote:last-child{margin-bottom:0}.markdown-section dl{padding:0}.markdown-section dl dt{padding:0;margin-top:.85em;font-style:italic;font-weight:700}.markdown-section dl dd{padding:0 .85em;margin-bottom:.85em}.markdown-section dd{margin-left:0}.markdown-section .glossary-term{cursor:help;text-decoration:underline}.navigation{position:absolute;top:50px;bottom:0;margin:0;max-width:150px;min-width:90px;display:flex;justify-content:center;align-content:center;flex-direction:column;font-size:40px;color:#ccc;text-align:center;-webkit-transition:all 350ms ease;-moz-transition:all 350ms ease;-o-transition:all 350ms ease;transition:all 350ms ease}.navigation:hover{text-decoration:none;color:#444}.navigation.navigation-next{right:0}.navigation.navigation-prev{left:0}@media (max-width:1240px){.navigation{position:static;top:auto;max-width:50%;width:50%;display:inline-block;float:left}.navigation.navigation-unique{max-width:100%;width:100%}}#book-search-input{padding:6px;background:0 0;transition:top .5s ease;background:#fff;border-bottom:1px solid rgba(0,0,0,.07);border-top:1px solid rgba(0,0,0,.07);margin-bottom:10px;margin-top:-1px}#book-search-input input,#book-search-input input:focus,#book-search-input input:hover{width:100%;background:0 0;border:1px solid transparent;box-shadow:none;outline:0;line-height:22px;padding:7px 7px;color:inherit}#book-search-results{opacity:1}#book-search-results .search-results .search-results-title{text-transform:uppercase;text-align:center;font-weight:200;margin-bottom:35px;opacity:.6}#book-search-results .search-results .has-results .search-results-item{display:block;word-wrap:break-word;overflow:hidden;color:#333;line-height:1.7;text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%}#book-search-results .search-results .has-results .search-results-item *{box-sizing:border-box;-webkit-box-sizing:border-box;font-size:inherit}#book-search-results .search-results .has-results .search-results-item>:first-child{margin-top:0!important}#book-search-results .search-results .has-results .search-results-item>:last-child{margin-bottom:0!important}#book-search-results .search-results .has-results .search-results-item blockquote,#book-search-results .search-results .has-results .search-results-item code,#book-search-results .search-results .has-results .search-results-item figure,#book-search-results .search-results .has-results .search-results-item img,#book-search-results .search-results .has-results .search-results-item pre,#book-search-results .search-results .has-results .search-results-item table,#book-search-results .search-results .has-results .search-results-item tr{page-break-inside:avoid}#book-search-results .search-results .has-results .search-results-item h2,#book-search-results .search-results .has-results .search-results-item h3,#book-search-results .search-results .has-results .search-results-item h4,#book-search-results .search-results .has-results .search-results-item h5,#book-search-results .search-results .has-results .search-results-item p{orphans:3;widows:3}#book-search-results .search-results .has-results .search-results-item h1,#book-search-results .search-results .has-results .search-results-item h2,#book-search-results .search-results .has-results .search-results-item h3,#book-search-results .search-results .has-results .search-results-item h4,#book-search-results .search-results .has-results .search-results-item h5{page-break-after:avoid}#book-search-results .search-results .has-results .search-results-item b,#book-search-results .search-results .has-results .search-results-item strong{font-weight:700}#book-search-results .search-results .has-results .search-results-item em{font-style:italic}#book-search-results .search-results .has-results .search-results-item blockquote,#book-search-results .search-results .has-results .search-results-item dl,#book-search-results .search-results .has-results .search-results-item ol,#book-search-results .search-results .has-results .search-results-item p,#book-search-results .search-results .has-results .search-results-item table,#book-search-results .search-results .has-results .search-results-item ul{margin-top:0;margin-bottom:.85em}#book-search-results .search-results .has-results .search-results-item a{color:#4183c4;text-decoration:none;background:0 0}#book-search-results .search-results .has-results .search-results-item a:active,#book-search-results .search-results .has-results .search-results-item a:focus,#book-search-results .search-results .has-results .search-results-item a:hover{outline:0;text-decoration:underline}#book-search-results .search-results .has-results .search-results-item img{border:0;max-width:100%}#book-search-results .search-results .has-results .search-results-item hr{height:4px;padding:0;margin:1.7em 0;overflow:hidden;background-color:#e7e7e7;border:none}#book-search-results .search-results .has-results .search-results-item hr:after,#book-search-results .search-results .has-results .search-results-item hr:before{display:table;content:" "}#book-search-results .search-results .has-results .search-results-item hr:after{clear:both}#book-search-results .search-results .has-results .search-results-item h1,#book-search-results .search-results .has-results .search-results-item h2,#book-search-results .search-results .has-results .search-results-item h3,#book-search-results .search-results .has-results .search-results-item h4,#book-search-results .search-results .has-results .search-results-item h5,#book-search-results .search-results .has-results .search-results-item h6{margin-top:1.275em;margin-bottom:.85em;font-weight:700}#book-search-results .search-results .has-results .search-results-item h1{font-size:2em}#book-search-results .search-results .has-results .search-results-item h2{font-size:1.75em}#book-search-results .search-results .has-results .search-results-item h3{font-size:1.5em}#book-search-results .search-results .has-results .search-results-item h4{font-size:1.25em}#book-search-results .search-results .has-results .search-results-item h5{font-size:1em}#book-search-results .search-results .has-results .search-results-item h6{font-size:1em;color:#777}#book-search-results .search-results .has-results .search-results-item code,#book-search-results .search-results .has-results .search-results-item pre{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;direction:ltr;margin:0;padding:0;border:none;color:inherit}#book-search-results .search-results .has-results .search-results-item pre{overflow:auto;word-wrap:normal;margin:0;padding:.85em 1em;margin-bottom:1.275em;background:#f7f7f7}#book-search-results .search-results .has-results .search-results-item pre>code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;font-size:.85em;white-space:pre;background:0 0}#book-search-results .search-results .has-results .search-results-item pre>code:after,#book-search-results .search-results .has-results .search-results-item pre>code:before{content:normal}#book-search-results .search-results .has-results .search-results-item code{padding:.2em;margin:0;font-size:.85em;background-color:#f7f7f7}#book-search-results .search-results .has-results .search-results-item code:after,#book-search-results .search-results .has-results .search-results-item code:before{letter-spacing:-.2em;content:"\00a0"}#book-search-results .search-results .has-results .search-results-item table{display:table;width:100%;border-collapse:collapse;border-spacing:0;overflow:auto}#book-search-results .search-results .has-results .search-results-item table td,#book-search-results .search-results .has-results .search-results-item table th{padding:6px 13px;border:1px solid #ddd}#book-search-results .search-results .has-results .search-results-item table tr{background-color:#fff;border-top:1px solid #ccc}#book-search-results .search-results .has-results .search-results-item table tr:nth-child(2n){background-color:#f8f8f8}#book-search-results .search-results .has-results .search-results-item table th{font-weight:700}#book-search-results .search-results .has-results .search-results-item ol,#book-search-results .search-results .has-results .search-results-item ul{padding:0;margin:0;margin-bottom:.85em;padding-left:2em}#book-search-results .search-results .has-results .search-results-item ol ol,#book-search-results .search-results .has-results .search-results-item ol ul,#book-search-results .search-results .has-results .search-results-item ul ol,#book-search-results .search-results .has-results .search-results-item ul ul{margin-top:0;margin-bottom:0}#book-search-results .search-results .has-results .search-results-item ol ol{list-style-type:lower-roman}#book-search-results .search-results .has-results .search-results-item blockquote{margin:0;margin-bottom:.85em;padding:0 15px;color:#858585;border-left:4px solid #e5e5e5}#book-search-results .search-results .has-results .search-results-item blockquote:first-child{margin-top:0}#book-search-results .search-results .has-results .search-results-item blockquote:last-child{margin-bottom:0}#book-search-results .search-results .has-results .search-results-item dl{padding:0}#book-search-results .search-results .has-results .search-results-item dl dt{padding:0;margin-top:.85em;font-style:italic;font-weight:700}#book-search-results .search-results .has-results .search-results-item dl dd{padding:0 .85em;margin-bottom:.85em}#book-search-results .search-results .has-results .search-results-item dd{margin-left:0}#book-search-results .search-results .has-results .search-results-item h3{margin-top:0;margin-bottom:0}#book-search-results .search-results .no-results{padding:40px 0}body.search-loading #book-search-results{opacity:.3}body.with-search .navigation{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:none;-webkit-touch-callout:none;-webkit-font-smoothing:antialiased}a{text-decoration:none}body,html{height:100%}html{font-size:62.5%}body{text-rendering:optimizeLegibility;font-smoothing:antialiased;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;letter-spacing:.2px;text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
\ No newline at end of file
</code></pre>
</div>
</div>
<div class="changelog--file -added">
<span class="changelog--badge">added</span>
<a class="changelog--filename" target="_self" href="/_book/gitbook/theme.js">_book/gitbook/theme.js</a>
<div class="changelog--change -show-less" id='ba350d4__book_gitbook_theme_js'>
<a class="changelog--disclosure" onclick="changeLogToggle('ba350d4__book_gitbook_theme_js')">
<span class="-more">Show More</span>
<span class="-less">Show Less</span>
</a>
<pre><code class="lang-diff">
+!function e(t,n,r){function o(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(i)return i(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[a]={exports:{}};t[a][0].call(c.exports,function(e){var n=t[a][1][e];return o(n?n:e)},c,c.exports,e,t,n,r)}return n[a].exports}for(var i="function"==typeof require&&require,a=0;a<r.length;a++)o(r[a]);return o}({1:[function(e,t,n){!function(e,n){"use strict";"object"==typeof t&&"object"==typeof t.exports?t.exports=e.document?n(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(e,t){t=t||te;var n=t.createElement("script");n.text=e,t.head.appendChild(n).parentNode.removeChild(n)}function r(e){var t=!!e&&"length"in e&&e.length,n=de.type(e);return"function"!==n&&!de.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?de.grep(e,function(e){return e===t!==n}):"string"!=typeof t?de.grep(e,function(e){return ae.call(t,e)>-1!==n}):ke.test(t)?de.filter(t,e,n):(t=de.filter(t,e),de.grep(e,function(e){return ae.call(t,e)>-1!==n&&1===e.nodeType}))}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function a(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]=!0}),t}function s(e){return e}function u(e){throw e}function l(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&de.isFunction(r=e.then)?r.call(e,t,n):t.call(void 0,e)}catch(e){n.call(void 0,e)}}function c(){te.removeEventListener("DOMContentLoaded",c),e.removeEventListener("load",c),de.ready()}function f(){this.expando=de.expando+f.uid++}function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Ie.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Re,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n=p(n)}catch(e){}Pe.set(e,t,n)}else n=void 0;return n}function d(e,t,n,r){var o,i=1,a=20,s=r?function(){return r.cur()}:function(){return de.css(e,t,"")},u=s(),l=n&&n[3]||(de.cssNumber[t]?"":"px"),c=(de.cssNumber[t]||"px"!==l&&+u)&&$e.exec(de.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do i=i||".5",c/=i,de.style(e,t,c+l);while(i!==(i=s()/u)&&1!==i&&--a)}return n&&(c=+c||+u||0,o=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=o)),o}function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t=n.body.appendChild(n.createElement(r)),o=de.css(t,"display"),t.parentNode.removeChild(t),"none"===o&&(o="block"),Ue[r]=o,o)}function m(e,t){for(var n,r,o=[],i=0,a=e.length;i<a;i++)r=e[i],r.style&&(n=r.style.display,t?("none"===n&&(o[i]=Fe.get(r,"display")||null,o[i]||(r.style.display="")),""===r.style.display&&We(r)&&(o[i]=g(r))):"none"!==n&&(o[i]="none",Fe.set(r,"display",n)));for(i=0;i<a;i++)null!=o[i]&&(e[i].style.display=o[i]);return e}function v(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&de.nodeName(e,t)?de.merge([e],n):n}function y(e,t){for(var n=0,r=e.length;n<r;n++)Fe.set(e[n],"globalEval",!t||Fe.get(t[n],"globalEval"))}function b(e,t,n,r,o){for(var i,a,s,u,l,c,f=t.createDocumentFragment(),p=[],h=0,d=e.length;h<d;h++)if(i=e[h],i||0===i)if("object"===de.type(i))de.merge(p,i.nodeType?[i]:i);else if(Ge.test(i)){for(a=a||f.appendChild(t.createElement("div")),s=(Xe.exec(i)||["",""])[1].toLowerCase(),u=Ve[s]||Ve._default,a.innerHTML=u[1]+de.htmlPrefilter(i)+u[2],c=u[0];c--;)a=a.lastChild;de.merge(p,a.childNodes),a=f.firstChild,a.textContent=""}else p.push(t.createTextNode(i));for(f.textContent="",h=0;i=p[h++];)if(r&&de.inArray(i,r)>-1)o&&o.push(i);else if(l=de.contains(i.ownerDocument,i),a=v(f.appendChild(i),"script"),l&&y(a),n)for(c=0;i=a[c++];)Ke.test(i.type||"")&&n.push(i);return f}function x(){return!0}function w(){return!1}function C(){try{return te.activeElement}catch(e){}}function T(e,t,n,r,o,i){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)T(e,s,n,r,t[s],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),o===!1)o=w;else if(!o)return e;return 1===i&&(a=o,o=function(e){return de().off(e),a.apply(this,arguments)},o.guid=a.guid||(a.guid=de.guid++)),e.each(function(){de.event.add(this,t,o,r,n)})}function k(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e:e}function j(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){var n,r,o,i,a,s,u,l;if(1===t.nodeType){if(Fe.hasData(e)&&(i=Fe.access(e),a=Fe.set(t,i),l=i.events)){delete a.handle,a.events={};for(o in l)for(n=0,r=l[o].length;n<r;n++)de.event.add(t,o,l[o][n])}Pe.hasData(e)&&(s=Pe.access(e),u=de.extend({},s),Pe.set(t,u))}}function S(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ze.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function A(e,t,r,o){t=oe.apply([],t);var i,a,s,u,l,c,f=0,p=e.length,h=p-1,d=t[0],g=de.isFunction(d);if(g||p>1&&"string"==typeof d&&!pe.checkClone&&nt.test(d))return e.each(function(n){var i=e.eq(n);g&&(t[0]=d.call(this,n,i.html())),A(i,t,r,o)});if(p&&(i=b(t,e[0].ownerDocument,!1,e,o),a=i.firstChild,1===i.childNodes.length&&(i=a),a||o)){for(s=de.map(v(i,"script"),j),u=s.length;f<p;f++)l=i,f!==h&&(l=de.clone(l,!0,!0),u&&de.merge(s,v(l,"script"))),r.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,de.map(s,E),f=0;f<u;f++)l=s[f],Ke.test(l.type||"")&&!Fe.access(l,"globalEval")&&de.contains(c,l)&&(l.src?de._evalUrl&&de._evalUrl(l.src):n(l.textContent.replace(ot,""),c))}return e}function q(e,t,n){for(var r,o=t?de.filter(t,e):e,i=0;null!=(r=o[i]);i++)n||1!==r.nodeType||de.cleanData(v(r)),r.parentNode&&(n&&de.contains(r.ownerDocument,r)&&y(v(r,"script")),r.parentNode.removeChild(r));return e}function D(e,t,n){var r,o,i,a,s=e.style;return n=n||st(e),n&&(a=n.getPropertyValue(t)||n[t],""!==a||de.contains(e.ownerDocument,e)||(a=de.style(e,t)),!pe.pixelMarginRight()&&at.test(a)&&it.test(t)&&(r=s.width,o=s.minWidth,i=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=o,s.maxWidth=i)),void 0!==a?a+"":a}function O(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function L(e){if(e in pt)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=ft.length;n--;)if(e=ft[n]+t,e in pt)return e}function H(e,t,n){var r=$e.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function F(e,t,n,r,o){var i,a=0;for(i=n===(r?"border":"content")?4:"width"===t?1:0;i<4;i+=2)"margin"===n&&(a+=de.css(e,n+_e[i],!0,o)),r?("content"===n&&(a-=de.css(e,"padding"+_e[i],!0,o)),"margin"!==n&&(a-=de.css(e,"border"+_e[i]+"Width",!0,o))):(a+=de.css(e,"padding"+_e[i],!0,o),"padding"!==n&&(a+=de.css(e,"border"+_e[i]+"Width",!0,o)));return a}function P(e,t,n){var r,o=!0,i=st(e),a="border-box"===de.css(e,"boxSizing",!1,i);if(e.getClientRects().length&&(r=e.getBoundingClientRect()[t]),r<=0||null==r){if(r=D(e,t,i),(r<0||null==r)&&(r=e.style[t]),at.test(r))return r;o=a&&(pe.boxSizingReliable()||r===e.style[t]),r=parseFloat(r)||0}return r+F(e,t,n||(a?"border":"content"),o,i)+"px"}function I(e,t,n,r,o){return new I.prototype.init(e,t,n,r,o)}function R(){dt&&(e.requestAnimationFrame(R),de.fx.tick())}function M(){return e.setTimeout(function(){ht=void 0}),ht=de.now()}function $(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=_e[r],o["margin"+n]=o["padding"+n]=e;return t&&(o.opacity=o.width=e),o}function _(e,t,n){for(var r,o=(U.tweeners[t]||[]).concat(U.tweeners["*"]),i=0,a=o.length;i<a;i++)if(r=o[i].call(n,t,e))return r}function W(e,t,n){var r,o,i,a,s,u,l,c,f="width"in t||"height"in t,p=this,h={},d=e.style,g=e.nodeType&&We(e),v=Fe.get(e,"fxshow");n.queue||(a=de._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,de.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(o=t[r],gt.test(o)){if(delete t[r],i=i||"toggle"===o,o===(g?"hide":"show")){if("show"!==o||!v||void 0===v[r])continue;g=!0}h[r]=v&&v[r]||de.style(e,r)}if(u=!de.isEmptyObject(t),u||!de.isEmptyObject(h)){f&&1===e.nodeType&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],l=v&&v.display,null==l&&(l=Fe.get(e,"display")),c=de.css(e,"display"),"none"===c&&(l?c=l:(m([e],!0),l=e.style.display||l,c=de.css(e,"display"),m([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===de.css(e,"float")&&(u||(p.done(function(){d.display=l}),null==l&&(c=d.display,l="none"===c?"":c)),d.display="inline-block")),n.overflow&&(d.overflow="hidden",p.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]})),u=!1;for(r in h)u||(v?"hidden"in v&&(g=v.hidden):v=Fe.access(e,"fxshow",{display:l}),i&&(v.hidden=!g),g&&m([e],!0),p.done(function(){g||m([e]),Fe.remove(e,"fxshow");for(r in h)de.style(e,r,h[r])})),u=_(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}}function B(e,t){var n,r,o,i,a;for(n in e)if(r=de.camelCase(n),o=t[r],i=e[n],de.isArray(i)&&(o=i[1],i=e[n]=i[0]),n!==r&&(e[r]=i,delete e[n]),a=de.cssHooks[r],a&&"expand"in a){i=a.expand(i),delete e[r];for(n in i)n in e||(e[n]=i[n],t[n]=o)}else t[r]=o}function U(e,t,n){var r,o,i=0,a=U.prefilters.length,s=de.Deferred().always(function(){delete u.elem}),u=function(){if(o)return!1;for(var t=ht||M(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,i=1-r,a=0,u=l.tweens.length;a<u;a++)l.tweens[a].run(i);return s.notifyWith(e,[l,i,n]),i<1&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:de.extend({},t),opts:de.extend(!0,{specialEasing:{},easing:de.easing._default},n),originalProperties:t,originalOptions:n,startTime:ht||M(),duration:n.duration,tweens:[],createTween:function(t,n){var r=de.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(o)return this;for(o=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(B(c,l.opts.specialEasing);i<a;i++)if(r=U.prefilters[i].call(l,e,c,l.opts))return de.isFunction(r.stop)&&(de._queueHooks(l.elem,l.opts.queue).stop=de.proxy(r.stop,r)),r;return de.map(c,_,l),de.isFunction(l.opts.start)&&l.opts.start.call(e,l),de.fx.timer(de.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function z(e){var t=e.match(qe)||[];return t.join(" ")}function X(e){return e.getAttribute&&e.getAttribute("class")||""}function K(e,t,n,r){var o;if(de.isArray(t))de.each(t,function(t,o){n||Et.test(e)?r(e,o):K(e+"["+("object"==typeof o&&null!=o?t:"")+"]",o,n,r)});else if(n||"object"!==de.type(t))r(e,t);else for(o in t)K(e+"["+o+"]",t[o],n,r)}function V(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,o=0,i=t.toLowerCase().match(qe)||[];if(de.isFunction(n))for(;r=i[o++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function G(e,t,n,r){function o(s){var u;return i[s]=!0,de.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||a||i[l]?a?!(u=l):void 0:(t.dataTypes.unshift(l),o(l),!1)}),u}var i={},a=e===Rt;return o(t.dataTypes[0])||!i["*"]&&o("*")}function Y(e,t){var n,r,o=de.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((o[n]?e:r||(r={}))[n]=t[n]);return r&&de.extend(!0,e,r),e}function Q(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(o in s)if(s[o]&&s[o].test(r)){u.unshift(o);break}if(u[0]in n)i=u[0];else{for(o in n){if(!u[0]||e.converters[o+" "+u[0]]){i=o;break}a||(a=o)}i=i||a}if(i)return i!==u[0]&&u.unshift(i),n[i]}function J(e,t,n,r){var o,i,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(i=c.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=i,i=c.shift())if("*"===i)i=u;else if("*"!==u&&u!==i){if(a=l[u+" "+i]||l["* "+i],!a)for(o in l)if(s=o.split(" "),s[1]===i&&(a=l[u+" "+s[0]]||l["* "+s[0]])){a===!0?a=l[o]:l[o]!==!0&&(i=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+i}}}return{state:"success",data:t}}function Z(e){return de.isWindow(e)?e:9===e.nodeType&&e.defaultView}var ee=[],te=e.document,ne=Object.getPrototypeOf,re=ee.slice,oe=ee.concat,ie=ee.push,ae=ee.indexOf,se={},ue=se.toString,le=se.hasOwnProperty,ce=le.toString,fe=ce.call(Object),pe={},he="3.1.1",de=function(e,t){return new de.fn.init(e,t)},ge=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,me=/^-ms-/,ve=/-([a-z])/g,ye=function(e,t){return t.toUpperCase()};de.fn=de.prototype={jquery:he,constructor:de,length:0,toArray:function(){return re.call(this)},get:function(e){return null==e?re.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=de.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return de.each(this,e)},map:function(e){return this.pushStack(de.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(re.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ie,sort:ee.sort,splice:ee.splice},de.extend=de.fn.extend=function(){var e,t,n,r,o,i,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||de.isFunction(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],r=e[t],a!==r&&(l&&r&&(de.isPlainObject(r)||(o=de.isArray(r)))?(o?(o=!1,i=n&&de.isArray(n)?n:[]):i=n&&de.isPlainObject(n)?n:{},a[t]=de.extend(l,i,r)):void 0!==r&&(a[t]=r));return a},de.extend({expando:"jQuery"+(he+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===de.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){var t=de.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==ue.call(e))&&(!(t=ne(e))||(n=le.call(t,"constructor")&&t.constructor,"function"==typeof n&&ce.call(n)===fe))},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?se[ue.call(e)]||"object":typeof e},globalEval:function(e){n(e)},camelCase:function(e){return e.replace(me,"ms-").replace(ve,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var n,o=0;if(r(e))for(n=e.length;o<n&&t.call(e[o],o,e[o])!==!1;o++);else for(o in e)if(t.call(e[o],o,e[o])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ge,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(r(Object(e))?de.merge(n,"string"==typeof e?[e]:e):ie.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:ae.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,o=e.length;r<n;r++)e[o++]=t[r];return e.length=o,e},grep:function(e,t,n){for(var r,o=[],i=0,a=e.length,s=!n;i<a;i++)r=!t(e[i],i),r!==s&&o.push(e[i]);return o},map:function(e,t,n){var o,i,a=0,s=[];if(r(e))for(o=e.length;a<o;a++)i=t(e[a],a,n),null!=i&&s.push(i);else for(a in e)i=t(e[a],a,n),null!=i&&s.push(i);return oe.apply([],s)},guid:1,proxy:function(e,t){var n,r,o;if("string"==typeof t&&(n=e[t],t=e,e=n),de.isFunction(e))return r=re.call(arguments,2),o=function(){return e.apply(t||this,r.concat(re.call(arguments)))},o.guid=e.guid=e.guid||de.guid++,o},now:Date.now,support:pe}),"function"==typeof Symbol&&(de.fn[Symbol.iterator]=ee[Symbol.iterator]),de.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){se["[object "+t+"]"]=t.toLowerCase()});var be=function(e){function t(e,t,n,r){var o,i,a,s,u,l,c,p=t&&t.ownerDocument,d=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==d&&9!==d&&11!==d)return n;if(!r&&((t?t.ownerDocument||t:_)!==L&&O(t),t=t||L,F)){if(11!==d&&(u=ve.exec(e)))if(o=u[1]){if(9===d){if(!(a=t.getElementById(o)))return n;if(a.id===o)return n.push(a),n}else if(p&&(a=p.getElementById(o))&&M(t,a)&&a.id===o)return n.push(a),n}else{if(u[2])return J.apply(n,t.getElementsByTagName(e)),n;if((o=u[3])&&C.getElementsByClassName&&t.getElementsByClassName)return J.apply(n,t.getElementsByClassName(o)),n}if(C.qsa&&!X[e+" "]&&(!P||!P.test(e))){if(1!==d)p=t,c=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(we,Ce):t.setAttribute("id",s=$),l=E(e),i=l.length;i--;)l[i]="#"+s+" "+h(l[i]);c=l.join(","),p=ye.test(e)&&f(t.parentNode)||t}if(c)try{return J.apply(n,p.querySelectorAll(c)),n}catch(e){}finally{s===$&&t.removeAttribute("id")}}}return S(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[$]=!0,e}function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function i(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return function(t){return"form"in t?t.parentNode&&t.disabled===!1?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ke(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var o,i=e([],n.length,t),a=i.length;a--;)n[o=i[a]]&&(n[o]=!(r[o]=n[o]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function d(e,t,n){var r=t.dir,o=t.next,i=o||r,a=n&&"parentNode"===i,s=B++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||a)return e(t,n,o);return!1}:function(t,n,u){var l,c,f,p=[W,s];if(u){for(;t=t[r];)if((1===t.nodeType||a)&&e(t,n,u))return!0}else for(;t=t[r];)if(1===t.nodeType||a)if(f=t[$]||(t[$]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),o&&o===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[i])&&l[0]===W&&l[1]===s)return p[2]=l[2];if(c[i]=p,p[2]=e(t,n,u))return!0}return!1}}function g(e){return e.length>1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var o=0,i=n.length;o<i;o++)t(e,n[o],r);return r}function v(e,t,n,r,o){for(var i,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(i=e[s])&&(n&&!n(i,r,o)||(a.push(i),l&&t.push(s)));return a}function y(e,t,n,o,i,a){return o&&!o[$]&&(o=y(o)),i&&!i[$]&&(i=y(i,a)),r(function(r,a,s,u){var l,c,f,p=[],h=[],d=a.length,g=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?g:v(g,p,e,s,u),b=n?i||(r?e:d||o)?[]:a:y;if(n&&n(y,b,s,u),o)for(l=v(b,h),o(l,[],s,u),c=l.length;c--;)(f=l[c])&&(b[h[c]]=!(y[h[c]]=f));if(r){if(i||e){if(i){for(l=[],c=b.length;c--;)(f=b[c])&&l.push(y[c]=f);i(null,b=[],l,u)}for(c=b.length;c--;)(f=b[c])&&(l=i?ee(r,f):p[c])>-1&&(r[l]=!(a[l]=f))}}else b=v(b===a?b.splice(d,b.length):b),i?i(null,a,b,u):J.apply(a,b)})}function b(e){for(var t,n,r,o=e.length,i=T.relative[e[0].type],a=i||T.relative[" "],s=i?1:0,u=d(function(e){return e===t},a,!0),l=d(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var o=!i&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,o}];s<o;s++)if(n=T.relative[e[s].type])c=[d(g(c),n)];else{if(n=T.filter[e[s].type].apply(null,e[s].matches),n[$]){for(r=++s;r<o&&!T.relative[e[r].type];r++);return y(s>1&&g(c),s>1&&h(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s<r&&b(e.slice(s,r)),r<o&&b(e=e.slice(r)),r<o&&h(e))}c.push(n)}return g(c)}function x(e,n){var o=n.length>0,i=e.length>0,a=function(r,a,s,u,l){var c,f,p,h=0,d="0",g=r&&[],m=[],y=A,b=r||i&&T.find.TAG("*",l),x=W+=null==y?1:Math.random()||.1,w=b.length;for(l&&(A=a===L||a||l);d!==w&&null!=(c=b[d]);d++){if(i&&c){for(f=0,a||c.ownerDocument===L||(O(c),s=!F);p=e[f++];)if(p(c,a||L,s)){u.push(c);break}l&&(W=x)}o&&((c=!p&&c)&&h--,r&&g.push(c))}if(h+=d,o&&d!==h){for(f=0;p=n[f++];)p(g,m,a,s);if(r){if(h>0)for(;d--;)g[d]||m[d]||(m[d]=Y.call(u));m=v(m)}J.apply(u,m),l&&!r&&m.length>0&&h+n.length>1&&t.uniqueSort(u)}return l&&(W=x,A=y),g};return o?r(a):a}var w,C,T,k,j,E,N,S,A,q,D,O,L,H,F,P,I,R,M,$="sizzle"+1*new Date,_=e.document,W=0,B=0,U=n(),z=n(),X=n(),K=function(e,t){return e===t&&(D=!0),0},V={}.hasOwnProperty,G=[],Y=G.pop,Q=G.push,J=G.push,Z=G.slice,ee=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",re="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",oe="\\["+ne+"*("+re+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+re+"))|)"+ne+"*\\]",ie=":("+re+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+oe+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),ue=new RegExp("^"+ne+"*,"+ne+"*"),le=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(ie),pe=new RegExp("^"+re+"$"),he={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ie),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),xe=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Ce=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Te=function(){O()},ke=d(function(e){return e.disabled===!0&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{J.apply(G=Z.call(_.childNodes),_.childNodes),G[_.childNodes.length].nodeType}catch(e){J={apply:G.length?function(e,t){Q.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}C=t.support={},j=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},O=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:_;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=L.documentElement,F=!j(L),_!==L&&(n=L.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),C.attributes=o(function(e){return e.className="i",!e.getAttribute("className")}),C.getElementsByTagName=o(function(e){return e.appendChild(L.createComment("")),!e.getElementsByTagName("*").length}),C.getElementsByClassName=me.test(L.getElementsByClassName),C.getById=o(function(e){return H.appendChild(e).id=$,!L.getElementsByName||!L.getElementsByName($).length}),C.getById?(T.filter.ID=function(e){var t=e.replace(be,xe);return function(e){return e.getAttribute("id")===t}},T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n=t.getElementById(e);return n?[n]:[]}}):(T.filter.ID=function(e){var t=e.replace(be,xe);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n,r,o,i=t.getElementById(e);if(i){if(n=i.getAttributeNode("id"),n&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if(n=i.getAttributeNode("id"),n&&n.value===e)return[i]}return[]}}),T.find.TAG=C.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):C.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},T.find.CLASS=C.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&F)return t.getElementsByClassName(e)},I=[],P=[],(C.qsa=me.test(L.querySelectorAll))&&(o(function(e){H.appendChild(e).innerHTML="<a id='"+$+"'></a><select id='"+$+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||P.push("~="),e.querySelectorAll(":checked").length||P.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||P.push(".#.+[+~]")}),o(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=L.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&P.push(":enabled",":disabled"),H.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(C.matchesSelector=me.test(R=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){C.disconnectedMatch=R.call(e,"*"),R.call(e,"[s!='']:x"),I.push("!=",ie)}),P=P.length&&new RegExp(P.join("|")),I=I.length&&new RegExp(I.join("|")),t=me.test(H.compareDocumentPosition),M=t||me.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},K=t?function(e,t){if(e===t)return D=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!C.sortDetached&&t.compareDocumentPosition(e)===n?e===L||e.ownerDocument===_&&M(_,e)?-1:t===L||t.ownerDocument===_&&M(_,t)?1:q?ee(q,e)-ee(q,t):0:4&n?-1:1)}:function(e,t){if(e===t)return D=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,s=[e],u=[t];if(!o||!i)return e===L?-1:t===L?1:o?-1:i?1:q?ee(q,e)-ee(q,t):0;if(o===i)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===_?-1:u[r]===_?1:0},L):L},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==L&&O(e),n=n.replace(ce,"='$1']"),C.matchesSelector&&F&&!X[n+" "]&&(!I||!I.test(n))&&(!P||!P.test(n)))try{var r=R.call(e,n);if(r||C.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,L,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==L&&O(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==L&&O(e);var n=T.attrHandle[t.toLowerCase()],r=n&&V.call(T.attrHandle,t.toLowerCase())?n(e,t,!F):void 0;return void 0!==r?r:C.attributes||!F?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(we,Ce)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,o=0;if(D=!C.detectDuplicates,q=!C.sortStable&&e.slice(0),e.sort(K),D){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return q=null,e},k=t.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=k(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,xe),e[3]=(e[3]||e[4]||e[5]||"").replace(be,xe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,xe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(o){var i=t.attr(o,e);return null==i?"!="===n:!n||(i+="","="===n?i===r:"!="===n?i!==r:"^="===n?r&&0===i.indexOf(r):"*="===n?r&&i.indexOf(r)>-1:"$="===n?r&&i.slice(-r.length)===r:"~="===n?(" "+i.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(i===r||i.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,h,d,g=i!==a?"nextSibling":"previousSibling",m=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!u&&!s,b=!1;if(m){if(i){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[a?m.firstChild:m.lastChild],a&&y){for(p=m,f=p[$]||(p[$]={}),c=f[p.uniqueID]||(f[p.uniqueID]={}),l=c[e]||[],h=l[0]===W&&l[1],b=h&&l[2],p=h&&m.childNodes[h];p=++h&&p&&p[g]||(b=h=0)||d.pop();)if(1===p.nodeType&&++b&&p===t){c[e]=[W,h,b];break}}else if(y&&(p=t,f=p[$]||(p[$]={}),c=f[p.uniqueID]||(f[p.uniqueID]={}),l=c[e]||[],h=l[0]===W&&l[1],b=h),b===!1)for(;(p=++h&&p&&p[g]||(b=h=0)||d.pop())&&((s?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++b||(y&&(f=p[$]||(p[$]={}),c=f[p.uniqueID]||(f[p.uniqueID]={}),c[e]=[W,b]),p!==t)););return b-=o,b===r||b%r===0&&b/r>=0}}},PSEUDO:function(e,n){var o,i=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return i[$]?i(n):i.length>1?(o=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,o=i(e,n),a=o.length;a--;)r=ee(e,o[a]),e[r]=!(t[r]=o[a])}):function(e){return i(e,0,o)}):i}},pseudos:{not:r(function(e){var t=[],n=[],o=N(e.replace(se,"$1"));return o[$]?r(function(e,t,n,r){for(var i,a=o(e,null,r,[]),s=e.length;s--;)(i=a[s])&&(e[s]=!(t[s]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){
+return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,xe),function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,xe).toLowerCase(),function(t){var n;do if(n=F?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:l(!1),disabled:l(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return de.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[n<0?n+t:n]}),even:c(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},T.pseudos.nth=T.pseudos.eq;for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[w]=s(w);for(w in{submit:!0,reset:!0})T.pseudos[w]=u(w);return p.prototype=T.filters=T.pseudos,T.setFilters=new p,E=t.tokenize=function(e,n){var r,o,i,a,s,u,l,c=z[e+" "];if(c)return n?0:c.slice(0);for(s=e,u=[],l=T.preFilter;s;){r&&!(o=ue.exec(s))||(o&&(s=s.slice(o[0].length)||s),u.push(i=[])),r=!1,(o=le.exec(s))&&(r=o.shift(),i.push({value:r,type:o[0].replace(se," ")}),s=s.slice(r.length));for(a in T.filter)!(o=he[a].exec(s))||l[a]&&!(o=l[a](o))||(r=o.shift(),i.push({value:r,type:a,matches:o}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):z(e,u).slice(0)},N=t.compile=function(e,t){var n,r=[],o=[],i=X[e+" "];if(!i){for(t||(t=E(e)),n=t.length;n--;)i=b(t[n]),i[$]?r.push(i):o.push(i);i=X(e,x(o,r)),i.selector=e}return i},S=t.select=function(e,t,n,r){var o,i,a,s,u,l="function"==typeof e&&e,c=!r&&E(e=l.selector||e);if(n=n||[],1===c.length){if(i=c[0]=c[0].slice(0),i.length>2&&"ID"===(a=i[0]).type&&9===t.nodeType&&F&&T.relative[i[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,xe),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=he.needsContext.test(e)?0:i.length;o--&&(a=i[o],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,xe),ye.test(i[0].type)&&f(t.parentNode)||t))){if(i.splice(o,1),e=r.length&&h(i),!e)return J.apply(n,r),n;break}}return(l||N(e,c))(r,t,!F,n,!t||ye.test(e)&&f(t.parentNode)||t),n},C.sortStable=$.split("").sort(K).join("")===$,C.detectDuplicates=!!D,O(),C.sortDetached=o(function(e){return 1&e.compareDocumentPosition(L.createElement("fieldset"))}),o(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||i("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),C.attributes&&o(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||i("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),o(function(e){return null==e.getAttribute("disabled")})||i(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);de.find=be,de.expr=be.selectors,de.expr[":"]=de.expr.pseudos,de.uniqueSort=de.unique=be.uniqueSort,de.text=be.getText,de.isXMLDoc=be.isXML,de.contains=be.contains,de.escapeSelector=be.escape;var xe=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&de(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ce=de.expr.match.needsContext,Te=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,ke=/^.[^:#\[\.,]*$/;de.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?de.find.matchesSelector(r,e)?[r]:[]:de.find.matches(e,de.grep(t,function(e){return 1===e.nodeType}))},de.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(de(e).filter(function(){for(t=0;t<r;t++)if(de.contains(o[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)de.find(e,o[t],n);return r>1?de.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Ce.test(e)?de(e):e||[],!1).length}});var je,Ee=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Ne=de.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||je,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Ee.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof de?t[0]:t,de.merge(this,de.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:te,!0)),Te.test(r[1])&&de.isPlainObject(t))for(r in t)de.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return o=te.getElementById(r[2]),o&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):de.isFunction(e)?void 0!==n.ready?n.ready(e):e(de):de.makeArray(e,this)};Ne.prototype=de.fn,je=de(te);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};de.fn.extend({has:function(e){var t=de(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(de.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,o=this.length,i=[],a="string"!=typeof e&&de(e);if(!Ce.test(e))for(;r<o;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&de.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?de.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?ae.call(de(e),this[0]):ae.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(de.uniqueSort(de.merge(this.get(),de(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),de.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return e.contentDocument||de.merge([],e.childNodes)}},function(e,t){de.fn[e]=function(n,r){var o=de.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=de.filter(r,o)),this.length>1&&(Ae[e]||de.uniqueSort(o),Se.test(e)&&o.reverse()),this.pushStack(o)}});var qe=/[^\x20\t\r\n\f]+/g;de.Callbacks=function(e){e="string"==typeof e?a(e):de.extend({},e);var t,n,r,o,i=[],s=[],u=-1,l=function(){for(o=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u<i.length;)i[u].apply(n[0],n[1])===!1&&e.stopOnFalse&&(u=i.length,n=!1);e.memory||(n=!1),t=!1,o&&(i=n?[]:"")},c={add:function(){return i&&(n&&!t&&(u=i.length-1,s.push(n)),function t(n){de.each(n,function(n,r){de.isFunction(r)?e.unique&&c.has(r)||i.push(r):r&&r.length&&"string"!==de.type(r)&&t(r)})}(arguments),n&&!t&&l()),this},remove:function(){return de.each(arguments,function(e,t){for(var n;(n=de.inArray(t,i,n))>-1;)i.splice(n,1),n<=u&&u--}),this},has:function(e){return e?de.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return o=s=[],i=n="",this},disabled:function(){return!i},lock:function(){return o=s=[],n||t||(i=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},de.extend({Deferred:function(t){var n=[["notify","progress",de.Callbacks("memory"),de.Callbacks("memory"),2],["resolve","done",de.Callbacks("once memory"),de.Callbacks("once memory"),0,"resolved"],["reject","fail",de.Callbacks("once memory"),de.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return de.Deferred(function(t){de.each(n,function(n,r){var o=de.isFunction(e[r[4]])&&e[r[4]];i[r[1]](function(){var e=o&&o.apply(this,arguments);e&&de.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,o?[e]:arguments)})}),e=null}).promise()},then:function(t,r,o){function i(t,n,r,o){return function(){var l=this,c=arguments,f=function(){var e,f;if(!(t<a)){if(e=r.apply(l,c),e===n.promise())throw new TypeError("Thenable self-resolution");f=e&&("object"==typeof e||"function"==typeof e)&&e.then,de.isFunction(f)?o?f.call(e,i(a,n,s,o),i(a,n,u,o)):(a++,f.call(e,i(a,n,s,o),i(a,n,u,o),i(a,n,s,n.notifyWith))):(r!==s&&(l=void 0,c=[e]),(o||n.resolveWith)(l,c))}},p=o?f:function(){try{f()}catch(e){de.Deferred.exceptionHook&&de.Deferred.exceptionHook(e,p.stackTrace),t+1>=a&&(r!==u&&(l=void 0,c=[e]),n.rejectWith(l,c))}};t?p():(de.Deferred.getStackHook&&(p.stackTrace=de.Deferred.getStackHook()),e.setTimeout(p))}}var a=0;return de.Deferred(function(e){n[0][3].add(i(0,e,de.isFunction(o)?o:s,e.notifyWith)),n[1][3].add(i(0,e,de.isFunction(t)?t:s)),n[2][3].add(i(0,e,de.isFunction(r)?r:u))}).promise()},promise:function(e){return null!=e?de.extend(e,o):o}},i={};return de.each(n,function(e,t){var a=t[2],s=t[5];o[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[0][2].lock),a.add(t[3].fire),i[t[0]]=function(){return i[t[0]+"With"](this===i?void 0:this,arguments),this},i[t[0]+"With"]=a.fireWith}),o.promise(i),t&&t.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=re.call(arguments),i=de.Deferred(),a=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?re.call(arguments):n,--t||i.resolveWith(r,o)}};if(t<=1&&(l(e,i.done(a(n)).resolve,i.reject),"pending"===i.state()||de.isFunction(o[n]&&o[n].then)))return i.then();for(;n--;)l(o[n],a(n),i.reject);return i.promise()}});var De=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;de.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&De.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},de.readyException=function(t){e.setTimeout(function(){throw t})};var Oe=de.Deferred();de.fn.ready=function(e){return Oe.then(e).catch(function(e){de.readyException(e)}),this},de.extend({isReady:!1,readyWait:1,holdReady:function(e){e?de.readyWait++:de.ready(!0)},ready:function(e){(e===!0?--de.readyWait:de.isReady)||(de.isReady=!0,e!==!0&&--de.readyWait>0||Oe.resolveWith(te,[de]))}}),de.ready.then=Oe.then,"complete"===te.readyState||"loading"!==te.readyState&&!te.documentElement.doScroll?e.setTimeout(de.ready):(te.addEventListener("DOMContentLoaded",c),e.addEventListener("load",c));var Le=function(e,t,n,r,o,i,a){var s=0,u=e.length,l=null==n;if("object"===de.type(n)){o=!0;for(s in n)Le(e,t,s,n[s],!0,i,a)}else if(void 0!==r&&(o=!0,de.isFunction(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(de(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return o?e:l?t.call(e):u?t(e[0],n):i},He=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};f.uid=1,f.prototype={cache:function(e){var t=e[this.expando];return t||(t={},He(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,o=this.cache(e);if("string"==typeof t)o[de.camelCase(t)]=n;else for(r in t)o[de.camelCase(r)]=t[r];return o},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][de.camelCase(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){de.isArray(t)?t=t.map(de.camelCase):(t=de.camelCase(t),t=t in r?[t]:t.match(qe)||[]),n=t.length;for(;n--;)delete r[t[n]]}(void 0===t||de.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!de.isEmptyObject(t)}};var Fe=new f,Pe=new f,Ie=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Re=/[A-Z]/g;de.extend({hasData:function(e){return Pe.hasData(e)||Fe.hasData(e)},data:function(e,t,n){return Pe.access(e,t,n)},removeData:function(e,t){Pe.remove(e,t)},_data:function(e,t,n){return Fe.access(e,t,n)},_removeData:function(e,t){Fe.remove(e,t)}}),de.fn.extend({data:function(e,t){var n,r,o,i=this[0],a=i&&i.attributes;if(void 0===e){if(this.length&&(o=Pe.get(i),1===i.nodeType&&!Fe.get(i,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=de.camelCase(r.slice(5)),h(i,r,o[r])));Fe.set(i,"hasDataAttrs",!0)}return o}return"object"==typeof e?this.each(function(){Pe.set(this,e)}):Le(this,function(t){var n;if(i&&void 0===t){if(n=Pe.get(i,e),void 0!==n)return n;if(n=h(i,e),void 0!==n)return n}else this.each(function(){Pe.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){Pe.remove(this,e)})}}),de.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Fe.get(e,t),n&&(!r||de.isArray(n)?r=Fe.access(e,t,de.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=de.queue(e,t),r=n.length,o=n.shift(),i=de._queueHooks(e,t),a=function(){de.dequeue(e,t)};"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,a,i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Fe.get(e,n)||Fe.access(e,n,{empty:de.Callbacks("once memory").add(function(){Fe.remove(e,[t+"queue",n])})})}}),de.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?de.queue(this[0],e):void 0===t?this:this.each(function(){var n=de.queue(this,e,t);de._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&de.dequeue(this,e)})},dequeue:function(e){return this.each(function(){de.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,o=de.Deferred(),i=this,a=this.length,s=function(){--r||o.resolveWith(i,[i])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=Fe.get(i[a],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(s));return s(),o.promise(t)}});var Me=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,$e=new RegExp("^(?:([+-])=|)("+Me+")([a-z%]*)$","i"),_e=["Top","Right","Bottom","Left"],We=function(e,t){return e=t||e,"none"===e.style.display||""===e.style.display&&de.contains(e.ownerDocument,e)&&"none"===de.css(e,"display")},Be=function(e,t,n,r){var o,i,a={};for(i in t)a[i]=e.style[i],e.style[i]=t[i];o=n.apply(e,r||[]);for(i in t)e.style[i]=a[i];return o},Ue={};de.fn.extend({show:function(){return m(this,!0)},hide:function(){return m(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){We(this)?de(this).show():de(this).hide()})}});var ze=/^(?:checkbox|radio)$/i,Xe=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,Ke=/^$|\/(?:java|ecma)script/i,Ve={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Ve.optgroup=Ve.option,Ve.tbody=Ve.tfoot=Ve.colgroup=Ve.caption=Ve.thead,Ve.th=Ve.td;var Ge=/<|&#?\w+;/;!function(){var e=te.createDocumentFragment(),t=e.appendChild(te.createElement("div")),n=te.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),pe.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="<textarea>x</textarea>",pe.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Ye=te.documentElement,Qe=/^key/,Je=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ze=/^([^.]*)(?:\.(.+)|)/;de.event={global:{},add:function(e,t,n,r,o){var i,a,s,u,l,c,f,p,h,d,g,m=Fe.get(e);if(m)for(n.handler&&(i=n,n=i.handler,o=i.selector),o&&de.find.matchesSelector(Ye,o),n.guid||(n.guid=de.guid++),(u=m.events)||(u=m.events={}),(a=m.handle)||(a=m.handle=function(t){return"undefined"!=typeof de&&de.event.triggered!==t.type?de.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],l=t.length;l--;)s=Ze.exec(t[l])||[],h=g=s[1],d=(s[2]||"").split(".").sort(),h&&(f=de.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=de.event.special[h]||{},c=de.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&de.expr.match.needsContext.test(o),namespace:d.join(".")},i),(p=u[h])||(p=u[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,d,a)!==!1||e.addEventListener&&e.addEventListener(h,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,c):p.push(c),de.event.global[h]=!0)},remove:function(e,t,n,r,o){var i,a,s,u,l,c,f,p,h,d,g,m=Fe.hasData(e)&&Fe.get(e);if(m&&(u=m.events)){for(t=(t||"").match(qe)||[""],l=t.length;l--;)if(s=Ze.exec(t[l])||[],h=g=s[1],d=(s[2]||"").split(".").sort(),h){for(f=de.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],s=s[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=i=p.length;i--;)c=p[i],!o&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(i,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||de.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)de.event.remove(e,h+t[l],n,r,!0);de.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,a,s=de.event.fix(e),u=new Array(arguments.length),l=(Fe.get(this,"events")||{})[s.type]||[],c=de.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,s)!==!1){for(a=de.event.handlers.call(this,s,l),t=0;(o=a[t++])&&!s.isPropagationStopped();)for(s.currentTarget=o.elem,n=0;(i=o.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(i.namespace)||(s.handleObj=i,s.data=i.data,r=((de.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),void 0!==r&&(s.result=r)===!1&&(s.preventDefault(),s.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,o,i,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||l.disabled!==!0)){for(i=[],a={},n=0;n<u;n++)r=t[n],o=r.selector+" ",void 0===a[o]&&(a[o]=r.needsContext?de(o,this).index(l)>-1:de.find(o,this,null,[l]).length),a[o]&&i.push(r);i.length&&s.push({elem:l,handlers:i})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(de.Event.prototype,e,{enumerable:!0,configurable:!0,get:de.isFunction(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[de.expando]?e:new de.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==C()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===C()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&de.nodeName(this,"input"))return this.click(),!1},_default:function(e){return de.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},de.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},de.Event=function(e,t){return this instanceof de.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?x:w,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&de.extend(this,t),this.timeStamp=e&&e.timeStamp||de.now(),void(this[de.expando]=!0)):new de.Event(e,t)},de.Event.prototype={constructor:de.Event,isDefaultPrevented:w,isPropagationStopped:w,isImmediatePropagationStopped:w,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=x,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=x,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=x,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},de.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Qe.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Je.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},de.event.addProp),de.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){de.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,o=e.relatedTarget,i=e.handleObj;return o&&(o===r||de.contains(r,o))||(e.type=i.origType,n=i.handler.apply(this,arguments),e.type=t),n}}}),de.fn.extend({on:function(e,t,n,r){return T(this,e,t,n,r)},one:function(e,t,n,r){return T(this,e,t,n,r,1)},off:function(e,t,n){var r,o;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,de(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(o in e)this.off(o,t,e[o]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=w),this.each(function(){de.event.remove(this,e,n,t)})}});var et=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,tt=/<script|<style|<link/i,nt=/checked\s*(?:[^=]|=\s*.checked.)/i,rt=/^true\/(.*)/,ot=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;de.extend({htmlPrefilter:function(e){return e.replace(et,"<$1></$2>")},clone:function(e,t,n){var r,o,i,a,s=e.cloneNode(!0),u=de.contains(e.ownerDocument,e);if(!(pe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||de.isXMLDoc(e)))for(a=v(s),i=v(e),r=0,o=i.length;r<o;r++)S(i[r],a[r]);if(t)if(n)for(i=i||v(e),a=a||v(s),r=0,o=i.length;r<o;r++)N(i[r],a[r]);else N(e,s);return a=v(s,"script"),a.length>0&&y(a,!u&&v(e,"script")),s},cleanData:function(e){for(var t,n,r,o=de.event.special,i=0;void 0!==(n=e[i]);i++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)o[r]?de.event.remove(n,r):de.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Pe.expando]&&(n[Pe.expando]=void 0)}}}),de.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?de.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=k(this,e);t.appendChild(e)}})},prepend:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=k(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(de.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return de.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!tt.test(e)&&!Ve[(Xe.exec(e)||["",""])[1].toLowerCase()]){e=de.htmlPrefilter(e);try{for(;n<r;n++)t=this[n]||{},1===t.nodeType&&(de.cleanData(v(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return A(this,arguments,function(t){var n=this.parentNode;de.inArray(this,e)<0&&(de.cleanData(v(this)),n&&n.replaceChild(t,this))},e)}}),de.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){de.fn[e]=function(e){for(var n,r=[],o=de(e),i=o.length-1,a=0;a<=i;a++)n=a===i?this:this.clone(!0),de(o[a])[t](n),ie.apply(r,n.get());return this.pushStack(r)}});var it=/^margin/,at=new RegExp("^("+Me+")(?!px)[a-z%]+$","i"),st=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)};!function(){function t(){if(s){s.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",s.innerHTML="",Ye.appendChild(a);var t=e.getComputedStyle(s);n="1%"!==t.top,i="2px"===t.marginLeft,r="4px"===t.width,s.style.marginRight="50%",o="4px"===t.marginRight,Ye.removeChild(a),s=null}}var n,r,o,i,a=te.createElement("div"),s=te.createElement("div");s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",pe.clearCloneStyle="content-box"===s.style.backgroundClip,a.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.appendChild(s),de.extend(pe,{pixelPosition:function(){return t(),n},boxSizingReliable:function(){return t(),r},pixelMarginRight:function(){return t(),o},reliableMarginLeft:function(){return t(),i}}))}();var ut=/^(none|table(?!-c[ea]).+)/,lt={position:"absolute",visibility:"hidden",display:"block"},ct={letterSpacing:"0",fontWeight:"400"},ft=["Webkit","Moz","ms"],pt=te.createElement("div").style;de.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=D(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,i,a,s=de.camelCase(t),u=e.style;return t=de.cssProps[s]||(de.cssProps[s]=L(s)||s),a=de.cssHooks[t]||de.cssHooks[s],void 0===n?a&&"get"in a&&void 0!==(o=a.get(e,!1,r))?o:u[t]:(i=typeof n,"string"===i&&(o=$e.exec(n))&&o[1]&&(n=d(e,t,o),i="number"),null!=n&&n===n&&("number"===i&&(n+=o&&o[3]||(de.cssNumber[s]?"":"px")),pe.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u[t]=n)),void 0)}},css:function(e,t,n,r){var o,i,a,s=de.camelCase(t);return t=de.cssProps[s]||(de.cssProps[s]=L(s)||s),a=de.cssHooks[t]||de.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=D(e,t,r)),"normal"===o&&t in ct&&(o=ct[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),de.each(["height","width"],function(e,t){de.cssHooks[t]={get:function(e,n,r){if(n)return!ut.test(de.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?P(e,t,r):Be(e,lt,function(){return P(e,t,r)})},set:function(e,n,r){var o,i=r&&st(e),a=r&&F(e,t,r,"border-box"===de.css(e,"boxSizing",!1,i),i);return a&&(o=$e.exec(n))&&"px"!==(o[3]||"px")&&(e.style[t]=n,n=de.css(e,t)),H(e,n,a)}}}),de.cssHooks.marginLeft=O(pe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(D(e,"marginLeft"))||e.getBoundingClientRect().left-Be(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),de.each({margin:"",padding:"",border:"Width"},function(e,t){de.cssHooks[e+t]={expand:function(n){for(var r=0,o={},i="string"==typeof n?n.split(" "):[n];r<4;r++)o[e+_e[r]+t]=i[r]||i[r-2]||i[0];return o}},it.test(e)||(de.cssHooks[e+t].set=H)}),de.fn.extend({css:function(e,t){return Le(this,function(e,t,n){var r,o,i={},a=0;if(de.isArray(t)){for(r=st(e),o=t.length;a<o;a++)i[t[a]]=de.css(e,t[a],!1,r);return i}return void 0!==n?de.style(e,t,n):de.css(e,t)},e,t,arguments.length>1)}}),de.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||de.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(de.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=de.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=de.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){de.fx.step[e.prop]?de.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[de.cssProps[e.prop]]&&!de.cssHooks[e.prop]?e.elem[e.prop]=e.now:de.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},de.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},de.fx=I.prototype.init,de.fx.step={};var ht,dt,gt=/^(?:toggle|show|hide)$/,mt=/queueHooks$/;de.Animation=de.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){de.isFunction(e)?(t=e,e=["*"]):e=e.match(qe);for(var n,r=0,o=e.length;r<o;r++)n=e[r],U.tweeners[n]=U.tweeners[n]||[],U.tweeners[n].unshift(t)},prefilters:[W],prefilter:function(e,t){t?U.prefilters.unshift(e):U.prefilters.push(e)}}),de.speed=function(e,t,n){var r=e&&"object"==typeof e?de.extend({},e):{complete:n||!n&&t||de.isFunction(e)&&e,duration:e,easing:n&&t||t&&!de.isFunction(t)&&t};return de.fx.off||te.hidden?r.duration=0:"number"!=typeof r.duration&&(r.duration in de.fx.speeds?r.duration=de.fx.speeds[r.duration]:r.duration=de.fx.speeds._default),null!=r.queue&&r.queue!==!0||(r.queue="fx"),r.old=r.complete,r.complete=function(){de.isFunction(r.old)&&r.old.call(this),r.queue&&de.dequeue(this,r.queue)},r},de.fn.extend({fadeTo:function(e,t,n,r){return this.filter(We).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){
+var o=de.isEmptyObject(e),i=de.speed(t,n,r),a=function(){var t=U(this,de.extend({},e),i);(o||Fe.get(this,"finish"))&&t.stop(!0)};return a.finish=a,o||i.queue===!1?this.each(a):this.queue(i.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,o=null!=e&&e+"queueHooks",i=de.timers,a=Fe.get(this);if(o)a[o]&&a[o].stop&&r(a[o]);else for(o in a)a[o]&&a[o].stop&&mt.test(o)&&r(a[o]);for(o=i.length;o--;)i[o].elem!==this||null!=e&&i[o].queue!==e||(i[o].anim.stop(n),t=!1,i.splice(o,1));!t&&n||de.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=Fe.get(this),r=n[e+"queue"],o=n[e+"queueHooks"],i=de.timers,a=r?r.length:0;for(n.finish=!0,de.queue(this,e,[]),o&&o.stop&&o.stop.call(this,!0),t=i.length;t--;)i[t].elem===this&&i[t].queue===e&&(i[t].anim.stop(!0),i.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),de.each(["toggle","show","hide"],function(e,t){var n=de.fn[t];de.fn[t]=function(e,r,o){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate($(t,!0),e,r,o)}}),de.each({slideDown:$("show"),slideUp:$("hide"),slideToggle:$("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){de.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),de.timers=[],de.fx.tick=function(){var e,t=0,n=de.timers;for(ht=de.now();t<n.length;t++)e=n[t],e()||n[t]!==e||n.splice(t--,1);n.length||de.fx.stop(),ht=void 0},de.fx.timer=function(e){de.timers.push(e),e()?de.fx.start():de.timers.pop()},de.fx.interval=13,de.fx.start=function(){dt||(dt=e.requestAnimationFrame?e.requestAnimationFrame(R):e.setInterval(de.fx.tick,de.fx.interval))},de.fx.stop=function(){e.cancelAnimationFrame?e.cancelAnimationFrame(dt):e.clearInterval(dt),dt=null},de.fx.speeds={slow:600,fast:200,_default:400},de.fn.delay=function(t,n){return t=de.fx?de.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var o=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(o)}})},function(){var e=te.createElement("input"),t=te.createElement("select"),n=t.appendChild(te.createElement("option"));e.type="checkbox",pe.checkOn=""!==e.value,pe.optSelected=n.selected,e=te.createElement("input"),e.value="t",e.type="radio",pe.radioValue="t"===e.value}();var vt,yt=de.expr.attrHandle;de.fn.extend({attr:function(e,t){return Le(this,de.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){de.removeAttr(this,e)})}}),de.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"==typeof e.getAttribute?de.prop(e,t,n):(1===i&&de.isXMLDoc(e)||(o=de.attrHooks[t.toLowerCase()]||(de.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void de.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:(r=de.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!pe.radioValue&&"radio"===t&&de.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(qe);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return t===!1?de.removeAttr(e,n):e.setAttribute(n,n),n}},de.each(de.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||de.find.attr;yt[t]=function(e,t,r){var o,i,a=t.toLowerCase();return r||(i=yt[a],yt[a]=o,o=null!=n(e,t,r)?a:null,yt[a]=i),o}});var bt=/^(?:input|select|textarea|button)$/i,xt=/^(?:a|area)$/i;de.fn.extend({prop:function(e,t){return Le(this,de.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[de.propFix[e]||e]})}}),de.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&de.isXMLDoc(e)||(t=de.propFix[t]||t,o=de.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=de.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||xt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),pe.optSelected||(de.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),de.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){de.propFix[this.toLowerCase()]=this}),de.fn.extend({addClass:function(e){var t,n,r,o,i,a,s,u=0;if(de.isFunction(e))return this.each(function(t){de(this).addClass(e.call(this,t,X(this)))});if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(a=0;i=t[a++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");s=z(r),o!==s&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,o,i,a,s,u=0;if(de.isFunction(e))return this.each(function(t){de(this).removeClass(e.call(this,t,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(a=0;i=t[a++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");s=z(r),o!==s&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):de.isFunction(e)?this.each(function(n){de(this).toggleClass(e.call(this,n,X(this),t),t)}):this.each(function(){var t,r,o,i;if("string"===n)for(r=0,o=de(this),i=e.match(qe)||[];t=i[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||(t=X(this),t&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(X(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;de.fn.extend({val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=de.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=r?e.call(this,n,de(this).val()):e,null==o?o="":"number"==typeof o?o+="":de.isArray(o)&&(o=de.map(o,function(e){return null==e?"":e+""})),t=de.valHooks[this.type]||de.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return t=de.valHooks[o.type]||de.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),de.extend({valHooks:{option:{get:function(e){var t=de.find.attr(e,"value");return null!=t?t:z(de.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?i+1:o.length;for(r=i<0?u:a?i:0;r<u;r++)if(n=o[r],(n.selected||r===i)&&!n.disabled&&(!n.parentNode.disabled||!de.nodeName(n.parentNode,"optgroup"))){if(t=de(n).val(),a)return t;s.push(t)}return s},set:function(e,t){for(var n,r,o=e.options,i=de.makeArray(t),a=o.length;a--;)r=o[a],(r.selected=de.inArray(de.valHooks.option.get(r),i)>-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),de.each(["radio","checkbox"],function(){de.valHooks[this]={set:function(e,t){if(de.isArray(t))return e.checked=de.inArray(de(e).val(),t)>-1}},pe.checkOn||(de.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Ct=/^(?:focusinfocus|focusoutblur)$/;de.extend(de.event,{trigger:function(t,n,r,o){var i,a,s,u,l,c,f,p=[r||te],h=le.call(t,"type")?t.type:t,d=le.call(t,"namespace")?t.namespace.split("."):[];if(a=s=r=r||te,3!==r.nodeType&&8!==r.nodeType&&!Ct.test(h+de.event.triggered)&&(h.indexOf(".")>-1&&(d=h.split("."),h=d.shift(),d.sort()),l=h.indexOf(":")<0&&"on"+h,t=t[de.expando]?t:new de.Event(h,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=d.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:de.makeArray(n,[t]),f=de.event.special[h]||{},o||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!o&&!f.noBubble&&!de.isWindow(r)){for(u=f.delegateType||h,Ct.test(u+h)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||te)&&p.push(s.defaultView||s.parentWindow||e)}for(i=0;(a=p[i++])&&!t.isPropagationStopped();)t.type=i>1?u:f.bindType||h,c=(Fe.get(a,"events")||{})[t.type]&&Fe.get(a,"handle"),c&&c.apply(a,n),c=l&&a[l],c&&c.apply&&He(a)&&(t.result=c.apply(a,n),t.result===!1&&t.preventDefault());return t.type=h,o||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!He(r)||l&&de.isFunction(r[h])&&!de.isWindow(r)&&(s=r[l],s&&(r[l]=null),de.event.triggered=h,r[h](),de.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=de.extend(new de.Event,n,{type:e,isSimulated:!0});de.event.trigger(r,null,t)}}),de.fn.extend({trigger:function(e,t){return this.each(function(){de.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return de.event.trigger(e,t,n,!0)}}),de.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){de.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),de.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),pe.focusin="onfocusin"in e,pe.focusin||de.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){de.event.simulate(t,e.target,de.event.fix(e))};de.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=Fe.access(r,t);o||r.addEventListener(e,n,!0),Fe.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=Fe.access(r,t)-1;o?Fe.access(r,t,o):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Tt=e.location,kt=de.now(),jt=/\?/;de.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||de.error("Invalid XML: "+t),n};var Et=/\[\]$/,Nt=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;de.param=function(e,t){var n,r=[],o=function(e,t){var n=de.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(de.isArray(e)||e.jquery&&!de.isPlainObject(e))de.each(e,function(){o(this.name,this.value)});else for(n in e)K(n,e[n],t,o);return r.join("&")},de.fn.extend({serialize:function(){return de.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=de.prop(this,"elements");return e?de.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!de(this).is(":disabled")&&At.test(this.nodeName)&&!St.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=de(this).val();return null==n?null:de.isArray(n)?de.map(n,function(e){return{name:t.name,value:e.replace(Nt,"\r\n")}}):{name:t.name,value:n.replace(Nt,"\r\n")}}).get()}});var qt=/%20/g,Dt=/#.*$/,Ot=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ft=/^(?:GET|HEAD)$/,Pt=/^\/\//,It={},Rt={},Mt="*/".concat("*"),$t=te.createElement("a");$t.href=Tt.href,de.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:Ht.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":de.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Y(Y(e,de.ajaxSettings),t):Y(de.ajaxSettings,e)},ajaxPrefilter:V(It),ajaxTransport:V(Rt),ajax:function(t,n){function r(t,n,r,s){var l,p,h,x,w,C=n;c||(c=!0,u&&e.clearTimeout(u),o=void 0,a=s||"",T.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(x=Q(d,T,r)),x=J(d,x,T,l),l?(d.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(de.lastModified[i]=w),w=T.getResponseHeader("etag"),w&&(de.etag[i]=w)),204===t||"HEAD"===d.type?C="nocontent":304===t?C="notmodified":(C=x.state,p=x.data,h=x.error,l=!h)):(h=C,!t&&C||(C="error",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,T]):v.rejectWith(g,[T,C,h]),T.statusCode(b),b=void 0,f&&m.trigger(l?"ajaxSuccess":"ajaxError",[T,d,l?p:h]),y.fireWith(g,[T,C]),f&&(m.trigger("ajaxComplete",[T,d]),--de.active||de.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var o,i,a,s,u,l,c,f,p,h,d=de.ajaxSetup({},n),g=d.context||d,m=d.context&&(g.nodeType||g.jquery)?de(g):de.event,v=de.Deferred(),y=de.Callbacks("once memory"),b=d.statusCode||{},x={},w={},C="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=Lt.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return null==c&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)T.always(e[T.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||C;return o&&o.abort(t),r(0,t),this}};if(v.promise(T),d.url=((t||d.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(qe)||[""],null==d.crossDomain){l=te.createElement("a");try{l.href=d.url,l.href=l.href,d.crossDomain=$t.protocol+"//"+$t.host!=l.protocol+"//"+l.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=de.param(d.data,d.traditional)),G(It,d,n,T),c)return T;f=de.event&&d.global,f&&0===de.active++&&de.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Ft.test(d.type),i=d.url.replace(Dt,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(qt,"+")):(h=d.url.slice(i.length),d.data&&(i+=(jt.test(i)?"&":"?")+d.data,delete d.data),d.cache===!1&&(i=i.replace(Ot,"$1"),h=(jt.test(i)?"&":"?")+"_="+kt++ +h),d.url=i+h),d.ifModified&&(de.lastModified[i]&&T.setRequestHeader("If-Modified-Since",de.lastModified[i]),de.etag[i]&&T.setRequestHeader("If-None-Match",de.etag[i])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",d.contentType),T.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Mt+"; q=0.01":""):d.accepts["*"]);for(p in d.headers)T.setRequestHeader(p,d.headers[p]);if(d.beforeSend&&(d.beforeSend.call(g,T,d)===!1||c))return T.abort();if(C="abort",y.add(d.complete),T.done(d.success),T.fail(d.error),o=G(Rt,d,n,T)){if(T.readyState=1,f&&m.trigger("ajaxSend",[T,d]),c)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},d.timeout));try{c=!1,o.send(x,r)}catch(e){if(c)throw e;r(-1,e)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return de.get(e,t,n,"json")},getScript:function(e,t){return de.get(e,void 0,t,"script")}}),de.each(["get","post"],function(e,t){de[t]=function(e,n,r,o){return de.isFunction(n)&&(o=o||r,r=n,n=void 0),de.ajax(de.extend({url:e,type:t,dataType:o,data:n,success:r},de.isPlainObject(e)&&e))}}),de._evalUrl=function(e){return de.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},de.fn.extend({wrapAll:function(e){var t;return this[0]&&(de.isFunction(e)&&(e=e.call(this[0])),t=de(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return de.isFunction(e)?this.each(function(t){de(this).wrapInner(e.call(this,t))}):this.each(function(){var t=de(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=de.isFunction(e);return this.each(function(n){de(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){de(this).replaceWith(this.childNodes)}),this}}),de.expr.pseudos.hidden=function(e){return!de.expr.pseudos.visible(e)},de.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},de.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},Wt=de.ajaxSettings.xhr();pe.cors=!!Wt&&"withCredentials"in Wt,pe.ajax=Wt=!!Wt,de.ajaxTransport(function(t){var n,r;if(pe.cors||Wt&&!t.crossDomain)return{send:function(o,i){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(a in o)s.setRequestHeader(a,o[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?i(0,"error"):i(s.status,s.statusText):i(_t[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),de.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),de.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return de.globalEval(e),e}}}),de.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),de.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,o){t=de("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),te.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Bt=[],Ut=/(=)\?(?=&|$)|\?\?/;de.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Bt.pop()||de.expando+"_"+kt++;return this[e]=!0,e}}),de.ajaxPrefilter("json jsonp",function(t,n,r){var o,i,a,s=t.jsonp!==!1&&(Ut.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return o=t.jsonpCallback=de.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Ut,"$1"+o):t.jsonp!==!1&&(t.url+=(jt.test(t.url)?"&":"?")+t.jsonp+"="+o),t.converters["script json"]=function(){return a||de.error(o+" was not called"),a[0]},t.dataTypes[0]="json",i=e[o],e[o]=function(){a=arguments},r.always(function(){void 0===i?de(e).removeProp(o):e[o]=i,t[o]&&(t.jsonpCallback=n.jsonpCallback,Bt.push(o)),a&&de.isFunction(i)&&i(a[0]),a=i=void 0}),"script"}),pe.createHTMLDocument=function(){var e=te.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),de.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var r,o,i;return t||(pe.createHTMLDocument?(t=te.implementation.createHTMLDocument(""),r=t.createElement("base"),r.href=te.location.href,t.head.appendChild(r)):t=te),o=Te.exec(e),i=!n&&[],o?[t.createElement(o[1])]:(o=b([e],t,i),i&&i.length&&de(i).remove(),de.merge([],o.childNodes))},de.fn.load=function(e,t,n){var r,o,i,a=this,s=e.indexOf(" ");return s>-1&&(r=z(e.slice(s)),e=e.slice(0,s)),de.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(o="POST"),a.length>0&&de.ajax({url:e,type:o||"GET",dataType:"html",data:t}).done(function(e){i=arguments,a.html(r?de("<div>").append(de.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},de.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){de.fn[t]=function(e){return this.on(t,e)}}),de.expr.pseudos.animated=function(e){return de.grep(de.timers,function(t){return e===t.elem}).length},de.offset={setOffset:function(e,t,n){var r,o,i,a,s,u,l,c=de.css(e,"position"),f=de(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),i=de.css(e,"top"),u=de.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(i+u).indexOf("auto")>-1,l?(r=f.position(),a=r.top,o=r.left):(a=parseFloat(i)||0,o=parseFloat(u)||0),de.isFunction(t)&&(t=t.call(e,n,de.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+o),"using"in t?t.using.call(e,p):f.css(p)}},de.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){de.offset.setOffset(this,e,t)});var t,n,r,o,i=this[0];if(i)return i.getClientRects().length?(r=i.getBoundingClientRect(),r.width||r.height?(o=i.ownerDocument,n=Z(o),t=o.documentElement,{top:r.top+n.pageYOffset-t.clientTop,left:r.left+n.pageXOffset-t.clientLeft}):r):{top:0,left:0}},position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===de.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),de.nodeName(e[0],"html")||(r=e.offset()),r={top:r.top+de.css(e[0],"borderTopWidth",!0),left:r.left+de.css(e[0],"borderLeftWidth",!0)}),{top:t.top-r.top-de.css(n,"marginTop",!0),left:t.left-r.left-de.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===de.css(e,"position");)e=e.offsetParent;return e||Ye})}}),de.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;de.fn[e]=function(r){return Le(this,function(e,r,o){var i=Z(e);return void 0===o?i?i[t]:e[r]:void(i?i.scrollTo(n?i.pageXOffset:o,n?o:i.pageYOffset):e[r]=o)},e,r,arguments.length)}}),de.each(["top","left"],function(e,t){de.cssHooks[t]=O(pe.pixelPosition,function(e,n){if(n)return n=D(e,t),at.test(n)?de(e).position()[t]+"px":n})}),de.each({Height:"height",Width:"width"},function(e,t){de.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){de.fn[r]=function(o,i){var a=arguments.length&&(n||"boolean"!=typeof o),s=n||(o===!0||i===!0?"margin":"border");return Le(this,function(t,n,o){var i;return de.isWindow(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===o?de.css(t,n,s):de.style(t,n,o,s)},t,a?o:void 0,a)}})}),de.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),de.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return de});var zt=e.jQuery,Xt=e.$;return de.noConflict=function(t){return e.$===de&&(e.$=Xt),t&&e.jQuery===de&&(e.jQuery=zt),de},t||(e.jQuery=e.$=de),de})},{}],2:[function(e,t,n){!function(e,n,r){function o(e,t,n){return e.addEventListener?void e.addEventListener(t,n,!1):void e.attachEvent("on"+t,n)}function i(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return y[e.which]?y[e.which]:b[e.which]?b[e.which]:String.fromCharCode(e.which).toLowerCase()}function a(e,t){return e.sort().join(",")===t.sort().join(",")}function s(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt"),e.ctrlKey&&t.push("ctrl"),e.metaKey&&t.push("meta"),t}function u(e){return e.preventDefault?void e.preventDefault():void(e.returnValue=!1)}function l(e){return e.stopPropagation?void e.stopPropagation():void(e.cancelBubble=!0)}function c(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}function f(){if(!v){v={};for(var e in y)e>95&&e<112||y.hasOwnProperty(e)&&(v[y[e]]=e)}return v}function p(e,t,n){return n||(n=f()[e]?"keydown":"keypress"),"keypress"==n&&t.length&&(n="keydown"),n}function h(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split("+"))}function d(e,t){var n,r,o,i=[];for(n=h(e),o=0;o<n.length;++o)r=n[o],w[r]&&(r=w[r]),t&&"keypress"!=t&&x[r]&&(r=x[r],i.push("shift")),c(r)&&i.push(r);return t=p(r,i,t),{key:r,modifiers:i,action:t}}function g(e,t){return null!==e&&e!==n&&(e===t||g(e.parentNode,t))}function m(e){function t(e){e=e||{};var t,n=!1;for(t in x)e[t]?n=!0:x[t]=0;n||(T=!1)}function r(e,t,n,r,o,i){var s,u,l=[],f=n.type;if(!y._callbacks[e])return[];for("keyup"==f&&c(e)&&(t=[e]),s=0;s<y._callbacks[e].length;++s)if(u=y._callbacks[e][s],(r||!u.seq||x[u.seq]==u.level)&&f==u.action&&("keypress"==f&&!n.metaKey&&!n.ctrlKey||a(t,u.modifiers))){var p=!r&&u.combo==o,h=r&&u.seq==r&&u.level==i;(p||h)&&y._callbacks[e].splice(s,1),l.push(u)}return l}function f(e,t,n,r){y.stopCallback(t,t.target||t.srcElement,n,r)||e(t,n)===!1&&(u(t),l(t))}function p(e){"number"!=typeof e.which&&(e.which=e.keyCode);var t=i(e);if(t)return"keyup"==e.type&&w===t?void(w=!1):void y.handleKey(t,s(e),e)}function h(){clearTimeout(b),b=setTimeout(t,1e3)}function g(e,n,r,o){function a(t){return function(){T=t,++x[e],h()}}function s(n){f(r,n,e),"keyup"!==o&&(w=i(n)),setTimeout(t,10)}x[e]=0;for(var u=0;u<n.length;++u){var l=u+1===n.length,c=l?s:a(o||d(n[u+1]).action);v(n[u],c,o,e,u)}}function v(e,t,n,o,i){y._directMap[e+":"+n]=t,e=e.replace(/\s+/g," ");var a,s=e.split(" ");return s.length>1?void g(e,s,t,n):(a=d(e,n),y._callbacks[a.key]=y._callbacks[a.key]||[],r(a.key,a.modifiers,{type:a.action},o,e,i),void y._callbacks[a.key][o?"unshift":"push"]({callback:t,modifiers:a.modifiers,action:a.action,seq:o,level:i,combo:e}))}var y=this;if(e=e||n,!(y instanceof m))return new m(e);y.target=e,y._callbacks={},y._directMap={};var b,x={},w=!1,C=!1,T=!1;y._handleKey=function(e,n,o){var i,a=r(e,n,o),s={},u=0,l=!1;for(i=0;i<a.length;++i)a[i].seq&&(u=Math.max(u,a[i].level));for(i=0;i<a.length;++i)if(a[i].seq){if(a[i].level!=u)continue;l=!0,s[a[i].seq]=1,f(a[i].callback,o,a[i].combo,a[i].seq)}else l||f(a[i].callback,o,a[i].combo);var p="keypress"==o.type&&C;o.type!=T||c(e)||p||t(s),C=l&&"keydown"==o.type},y._bindMultiple=function(e,t,n){for(var r=0;r<e.length;++r)v(e[r],t,n)},o(e,"keypress",p),o(e,"keydown",p),o(e,"keyup",p)}if(e){for(var v,y={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},b={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},x={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},w={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},C=1;C<20;++C)y[111+C]="f"+C;for(C=0;C<=9;++C)y[C+96]=C;m.prototype.bind=function(e,t,n){var r=this;return e=e instanceof Array?e:[e],r._bindMultiple.call(r,e,t,n),r},m.prototype.unbind=function(e,t){var n=this;return n.bind.call(n,e,function(){},t)},m.prototype.trigger=function(e,t){var n=this;return n._directMap[e+":"+t]&&n._directMap[e+":"+t]({},e),n},m.prototype.reset=function(){var e=this;return e._callbacks={},e._directMap={},e},m.prototype.stopCallback=function(e,t){var n=this;return!((" "+t.className+" ").indexOf(" mousetrap ")>-1)&&(!g(t,n.target)&&("INPUT"==t.tagName||"SELECT"==t.tagName||"TEXTAREA"==t.tagName||t.isContentEditable))},m.prototype.handleKey=function(){var e=this;return e._handleKey.apply(e,arguments)},m.addKeycodes=function(e){for(var t in e)e.hasOwnProperty(t)&&(y[t]=e[t]);v=null},m.init=function(){var e=m(n);for(var t in e)"_"!==t.charAt(0)&&(m[t]=function(t){return function(){return e[t].apply(e,arguments)}}(t))},m.init(),e.Mousetrap=m,"undefined"!=typeof t&&t.exports&&(t.exports=m),"function"==typeof define&&define.amd&&define(function(){return m})}}("undefined"!=typeof window?window:null,"undefined"!=typeof window?document:null)},{}],3:[function(e,t,n){(function(e){!function(r){function o(e){throw new RangeError(L[e])}function i(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function a(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]),e=e.replace(O,".");var o=e.split("."),a=i(o,t).join(".");return r+a}function s(e){for(var t,n,r=[],o=0,i=e.length;o<i;)t=e.charCodeAt(o++),t>=55296&&t<=56319&&o<i?(n=e.charCodeAt(o++),56320==(64512&n)?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),o--)):r.push(t);return r}function u(e){return i(e,function(e){var t="";return e>65535&&(e-=65536,t+=P(e>>>10&1023|55296),e=56320|1023&e),t+=P(e)}).join("")}function l(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:C}function c(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function f(e,t,n){var r=0;for(e=n?F(e/E):e>>1,e+=F(e/t);e>H*k>>1;r+=C)e=F(e/H);return F(r+(H+1)*e/(e+j))}function p(e){var t,n,r,i,a,s,c,p,h,d,g=[],m=e.length,v=0,y=S,b=N;for(n=e.lastIndexOf(A),n<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&o("not-basic"),g.push(e.charCodeAt(r));for(i=n>0?n+1:0;i<m;){for(a=v,s=1,c=C;i>=m&&o("invalid-input"),p=l(e.charCodeAt(i++)),(p>=C||p>F((w-v)/s))&&o("overflow"),v+=p*s,h=c<=b?T:c>=b+k?k:c-b,!(p<h);c+=C)d=C-h,s>F(w/d)&&o("overflow"),s*=d;t=g.length+1,b=f(v-a,t,0==a),F(v/t)>w-y&&o("overflow"),y+=F(v/t),v%=t,g.splice(v++,0,y)}return u(g)}function h(e){var t,n,r,i,a,u,l,p,h,d,g,m,v,y,b,x=[];for(e=s(e),m=e.length,t=S,n=0,a=N,u=0;u<m;++u)g=e[u],g<128&&x.push(P(g));for(r=i=x.length,i&&x.push(A);r<m;){for(l=w,u=0;u<m;++u)g=e[u],g>=t&&g<l&&(l=g);for(v=r+1,l-t>F((w-n)/v)&&o("overflow"),n+=(l-t)*v,t=l,u=0;u<m;++u)if(g=e[u],g<t&&++n>w&&o("overflow"),g==t){for(p=n,h=C;d=h<=a?T:h>=a+k?k:h-a,!(p<d);h+=C)b=p-d,y=C-d,x.push(P(c(d+b%y,0))),p=F(b/y);x.push(P(c(p,0))),a=f(n,v,r==i),n=0,++r}++n,++t}return x.join("")}function d(e){return a(e,function(e){return q.test(e)?p(e.slice(4).toLowerCase()):e})}function g(e){return a(e,function(e){return D.test(e)?"xn--"+h(e):e})}var m="object"==typeof n&&n&&!n.nodeType&&n,v="object"==typeof t&&t&&!t.nodeType&&t,y="object"==typeof e&&e;y.global!==y&&y.window!==y&&y.self!==y||(r=y);var b,x,w=2147483647,C=36,T=1,k=26,j=38,E=700,N=72,S=128,A="-",q=/^xn--/,D=/[^\x20-\x7E]/,O=/[\x2E\u3002\uFF0E\uFF61]/g,L={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},H=C-T,F=Math.floor,P=String.fromCharCode;if(b={version:"1.4.1",ucs2:{decode:s,encode:u},decode:p,encode:h,toASCII:g,toUnicode:d},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return b});else if(m&&v)if(t.exports==m)v.exports=b;else for(x in b)b.hasOwnProperty(x)&&(m[x]=b[x]);else r.punycode=b}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,n,i){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var s=/\+/g;e=e.split(t);var u=1e3;i&&"number"==typeof i.maxKeys&&(u=i.maxKeys);var l=e.length;u>0&&l>u&&(l=u);for(var c=0;c<l;++c){var f,p,h,d,g=e[c].replace(s,"%20"),m=g.indexOf(n);m>=0?(f=g.substr(0,m),p=g.substr(m+1)):(f=g,p=""),h=decodeURIComponent(f),d=decodeURIComponent(p),
+r(a,h)?o(a[h])?a[h].push(d):a[h]=[a[h],d]:a[h]=d}return a};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],5:[function(e,t,n){"use strict";function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var o=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,n,s){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?r(a(e),function(a){var s=encodeURIComponent(o(a))+n;return i(e[a])?r(e[a],function(e){return s+encodeURIComponent(o(e))}).join(t):s+encodeURIComponent(o(e[a]))}).join(t):s?encodeURIComponent(o(s))+n+encodeURIComponent(o(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},a=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},{}],6:[function(e,t,n){"use strict";n.decode=n.parse=e("./decode"),n.encode=n.stringify=e("./encode")},{"./decode":4,"./encode":5}],7:[function(e,t,n){"use strict";function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function o(e,t,n){if(e&&l.isObject(e)&&e instanceof r)return e;var o=new r;return o.parse(e,t,n),o}function i(e){return l.isString(e)&&(e=o(e)),e instanceof r?e.format():r.prototype.format.call(e)}function a(e,t){return o(e,!1,!0).resolve(t)}function s(e,t){return e?o(e,!1,!0).resolveObject(t):t}var u=e("punycode"),l=e("./util");n.parse=o,n.resolve=a,n.resolveObject=s,n.format=i,n.Url=r;var c=/^([a-z0-9.+-]+:)/i,f=/:[0-9]*$/,p=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,h=["<",">",'"',"`"," ","\r","\n","\t"],d=["{","}","|","\\","^","`"].concat(h),g=["'"].concat(d),m=["%","/","?",";","#"].concat(g),v=["/","?","#"],y=255,b=/^[+a-z0-9A-Z_-]{0,63}$/,x=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,w={javascript:!0,"javascript:":!0},C={javascript:!0,"javascript:":!0},T={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},k=e("querystring");r.prototype.parse=function(e,t,n){if(!l.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var r=e.indexOf("?"),o=r!==-1&&r<e.indexOf("#")?"?":"#",i=e.split(o),a=/\\/g;i[0]=i[0].replace(a,"/"),e=i.join(o);var s=e;if(s=s.trim(),!n&&1===e.split("#").length){var f=p.exec(s);if(f)return this.path=s,this.href=s,this.pathname=f[1],f[2]?(this.search=f[2],t?this.query=k.parse(this.search.substr(1)):this.query=this.search.substr(1)):t&&(this.search="",this.query={}),this}var h=c.exec(s);if(h){h=h[0];var d=h.toLowerCase();this.protocol=d,s=s.substr(h.length)}if(n||h||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var j="//"===s.substr(0,2);!j||h&&C[h]||(s=s.substr(2),this.slashes=!0)}if(!C[h]&&(j||h&&!T[h])){for(var E=-1,N=0;N<v.length;N++){var S=s.indexOf(v[N]);S!==-1&&(E===-1||S<E)&&(E=S)}var A,q;q=E===-1?s.lastIndexOf("@"):s.lastIndexOf("@",E),q!==-1&&(A=s.slice(0,q),s=s.slice(q+1),this.auth=decodeURIComponent(A)),E=-1;for(var N=0;N<m.length;N++){var S=s.indexOf(m[N]);S!==-1&&(E===-1||S<E)&&(E=S)}E===-1&&(E=s.length),this.host=s.slice(0,E),s=s.slice(E),this.parseHost(),this.hostname=this.hostname||"";var D="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!D)for(var O=this.hostname.split(/\./),N=0,L=O.length;N<L;N++){var H=O[N];if(H&&!H.match(b)){for(var F="",P=0,I=H.length;P<I;P++)F+=H.charCodeAt(P)>127?"x":H[P];if(!F.match(b)){var R=O.slice(0,N),M=O.slice(N+1),$=H.match(x);$&&(R.push($[1]),M.unshift($[2])),M.length&&(s="/"+M.join(".")+s),this.hostname=R.join(".");break}}}this.hostname.length>y?this.hostname="":this.hostname=this.hostname.toLowerCase(),D||(this.hostname=u.toASCII(this.hostname));var _=this.port?":"+this.port:"",W=this.hostname||"";this.host=W+_,this.href+=this.host,D&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!w[d])for(var N=0,L=g.length;N<L;N++){var B=g[N];if(s.indexOf(B)!==-1){var U=encodeURIComponent(B);U===B&&(U=escape(B)),s=s.split(B).join(U)}}var z=s.indexOf("#");z!==-1&&(this.hash=s.substr(z),s=s.slice(0,z));var X=s.indexOf("?");if(X!==-1?(this.search=s.substr(X),this.query=s.substr(X+1),t&&(this.query=k.parse(this.query)),s=s.slice(0,X)):t&&(this.search="",this.query={}),s&&(this.pathname=s),T[d]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var _=this.pathname||"",K=this.search||"";this.path=_+K}return this.href=this.format(),this},r.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",o=!1,i="";this.host?o=e+this.host:this.hostname&&(o=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&l.isObject(this.query)&&Object.keys(this.query).length&&(i=k.stringify(this.query));var a=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||T[t])&&o!==!1?(o="//"+(o||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):o||(o=""),r&&"#"!==r.charAt(0)&&(r="#"+r),a&&"?"!==a.charAt(0)&&(a="?"+a),n=n.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),a=a.replace("#","%23"),t+o+n+a+r},r.prototype.resolve=function(e){return this.resolveObject(o(e,!1,!0)).format()},r.prototype.resolveObject=function(e){if(l.isString(e)){var t=new r;t.parse(e,!1,!0),e=t}for(var n=new r,o=Object.keys(this),i=0;i<o.length;i++){var a=o[i];n[a]=this[a]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),u=0;u<s.length;u++){var c=s[u];"protocol"!==c&&(n[c]=e[c])}return T[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!T[e.protocol]){for(var f=Object.keys(e),p=0;p<f.length;p++){var h=f[p];n[h]=e[h]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||C[e.protocol])n.pathname=e.pathname;else{for(var d=(e.pathname||"").split("/");d.length&&!(e.host=d.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==d[0]&&d.unshift(""),d.length<2&&d.unshift(""),n.pathname=d.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var g=n.pathname||"",m=n.search||"";n.path=g+m}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var v=n.pathname&&"/"===n.pathname.charAt(0),y=e.host||e.pathname&&"/"===e.pathname.charAt(0),b=y||v||n.host&&e.pathname,x=b,w=n.pathname&&n.pathname.split("/")||[],d=e.pathname&&e.pathname.split("/")||[],k=n.protocol&&!T[n.protocol];if(k&&(n.hostname="",n.port=null,n.host&&(""===w[0]?w[0]=n.host:w.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===d[0]?d[0]=e.host:d.unshift(e.host)),e.host=null),b=b&&(""===d[0]||""===w[0])),y)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,w=d;else if(d.length)w||(w=[]),w.pop(),w=w.concat(d),n.search=e.search,n.query=e.query;else if(!l.isNullOrUndefined(e.search)){if(k){n.hostname=n.host=w.shift();var j=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");j&&(n.auth=j.shift(),n.host=n.hostname=j.shift())}return n.search=e.search,n.query=e.query,l.isNull(n.pathname)&&l.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var E=w.slice(-1)[0],N=(n.host||e.host||w.length>1)&&("."===E||".."===E)||""===E,S=0,A=w.length;A>=0;A--)E=w[A],"."===E?w.splice(A,1):".."===E?(w.splice(A,1),S++):S&&(w.splice(A,1),S--);if(!b&&!x)for(;S--;S)w.unshift("..");!b||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),N&&"/"!==w.join("/").substr(-1)&&w.push("");var q=""===w[0]||w[0]&&"/"===w[0].charAt(0);if(k){n.hostname=n.host=q?"":w.length?w.shift():"";var j=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");j&&(n.auth=j.shift(),n.host=n.hostname=j.shift())}return b=b||n.host&&w.length,b&&!q&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),l.isNull(n.pathname)&&l.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},r.prototype.parseHost=function(){var e=this.host,t=f.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":8,punycode:3,querystring:6}],8:[function(e,t,n){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],9:[function(e,t,n){function r(e){var t=a(e.currentTarget).parent().find(".dropdown-menu");t.toggleClass("open"),e.stopPropagation(),e.preventDefault()}function o(e){a(".dropdown-menu").removeClass("open")}function i(){a(document).on("click",".toggle-dropdown",r),a(document).on("click",".dropdown-menu",function(e){e.stopPropagation()}),a(document).on("click",o)}var a=e("jquery");t.exports={init:i}},{jquery:1}],10:[function(e,t,n){function r(){s.init(),i.init(),o.init(),a.init(),u.createButton({index:0,icon:"fa fa-align-justify",onClick:function(e){e.preventDefault(),s.toggle()}})}var o=e("./dropdown"),i=e("./keyboard"),a=e("./navigation"),s=e("./sidebar"),u=e("./toolbar"),l=window.gitbook;l.events.on("start",r),l.keyboard=i,l.navigation=a,l.sidebar=s,l.toolbar=u},{"./dropdown":9,"./keyboard":11,"./navigation":13,"./sidebar":15,"./toolbar":16}],11:[function(e,t,n){function r(e,t){i.bind(e,function(e){return t(),!1})}function o(){r(["right"],function(e){a.goNext()}),r(["left"],function(e){a.goPrev()}),r(["s"],function(e){s.toggle()})}var i=e("mousetrap"),a=e("./navigation"),s=e("./sidebar");t.exports={init:o,bind:r}},{"./navigation":13,"./sidebar":15,mousetrap:2}],12:[function(e,t,n){function r(e){return o.state.$book.addClass("is-loading"),e.always(function(){o.state.$book.removeClass("is-loading")}),e}var o=window.gitbook;t.exports={show:r}},{}],13:[function(e,t,n){function r(){return T(E.isSmallScreen()?".book-body":".body-inner")}function o(e){var t=r(),n=0;i(e)&&(e&&(n=u(e)),t.unbind("scroll"),t.animate({scrollTop:n},800,"swing",function(){t.scroll(f)}),l(null,e))}function i(e){var t=r(),n=t.find(e);return!!n.length}function a(e){return 0===e.length}function s(e,t){return e.length>0&&e.filter(t).length>0}function u(e){var t=r(),n=t.find(".page-inner"),o=t.find(e),i=o.offsetParent(),u=0;if(s([t,n,o,i],a))return 0;u=o.position().top;for(var l=10,c=0;c<l&&(!i.is(n)&&!i.is(i.offsetParent()));c++)o=i,u+=o.position().top,i=o.offsetParent();return Math.floor(u)}function l(e,t){if(e||t||(e=w.first()),t&&(e=w.length>1?w.filter(function(){var e=c(T(this));return e==t}).first():w.first()),!e.is(C)){C=e,w.removeClass("active"),e.addClass("active"),t=c(e);var n=window.location.pathname+window.location.hash,r=window.location.pathname+t;r!=n&&history.replaceState({path:r},null,r)}}function c(e){var t=e.children("a"),n=t.attr("href").split("#")[1];return n&&(n="#"+n),n?n:""}function f(){var e=r(),t=e.scrollTop(),n=e.prop("scrollHeight"),o=e.prop("clientHeight"),i=w.length,a=null;T(w.get().reverse()).each(function(e){var n,r=c(T(this));r&&!a&&(n=u(r),t>=n&&(a=T(this))),e!=i-1||a||(a=T(this))}),a||t||(a=w.first()),t&&n-t==o&&(a=w.last()),l(a)}function p(e,t){var n=k.parse(A),r=k.resolve(window.location.pathname,e),i=k.parse(r),a=i.hash,s=i.pathname!==n.pathname,u=Boolean(i.hostname);if(!S||u)return void(location.href=e);if(!s)return t&&history.pushState({path:r},null,r),o(a);A=r;var l=T.Deferred(function(e){T.ajax({type:"GET",url:r,cache:!0,headers:{"Access-Control-Expose-Headers":"X-Current-Location"},success:function(n,i,s){var u=s.getResponseHeader("X-Current-Location")||r;n=n.replace(/<(\/?)(html|head|body)([^>]*)>/gi,function(e,t,n,r){return"<"+t+"div"+(t?"":' data-element="'+n+'"')+r+">"});var l,c=T(n),f=c.find(".book");if(0===f.length){var p=new Error("Invalid gitbook page, redirecting...");return e.reject(p)}t&&history.pushState({path:u},null,u),c=T(n),l=c.find("[data-element=head]"),f=c.find(".book"),document.title=l.find("title").text();var h=T("head");h.find("link[rel=prev]").remove(),h.find("link[rel=next]").remove(),h.append(l.find("link[rel=prev]")),h.append(l.find("link[rel=next]"));var g=T(".book").attr("class"),m=T(".book-summary").scrollTop();f.toggleClass("with-summary",T(".book").hasClass("with-summary")),T(".book").replaceWith(f),T(".book").attr("class",g),T(".book-summary").scrollTop(m),N.state.$book=T(".book"),d(!a),a&&o(a),e.resolve()}})}).promise();return j.show(l.fail(function(e){console.log(e)}))}function h(){var e,t;e=parseInt(T(".body-inner").css("width"),10),t=parseInt(T(".page-wrapper").css("width"),10),T(".navigation-next").css("margin-right",e-t+"px");var n=r();n.unbind("scroll"),n.scroll(f)}function d(e){var t=T(".book-body"),n=t.find(".body-inner"),o=n.find(".page-wrapper");h(),o.focus();var i=r();e!==!1&&i.scrollTop(0),w=T(".book-summary .summary .chapter").filter(function(){var e=T(this).children("a"),t=null;if(!e.length)return!1;t=e.attr("href").split("#")[0];var n=k.resolve(window.location.pathname,t);return window.location.pathname==n}),w.length>1?i.scroll(f):C=w.first()}function g(e){return 0===e.button}function m(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function v(e){var t=T(this),n=t.attr("target");if(!m(e)&&g(e)&&!n){e.stopPropagation(),e.preventDefault();var r=t.attr("href");r&&p(r,!0)}}function y(){var e=T(".navigation-next").attr("href");e&&p(e,!0)}function b(){var e=T(".navigation-prev").attr("href");e&&p(e,!0)}function x(){T.ajaxSetup({cache:!1}),history.replaceState({path:window.location.href},""),window.onpopstate=function(e){if(null!==e.state)return p(e.state.path,!1)},T(document).on("click",".navigation-prev",v),T(document).on("click",".navigation-next",v),T(document).on("click",".summary [data-path] a",v),T(document).on("click",".page-inner a",v),T(window).resize(h),d(!1)}var w,C,T=e("jquery"),k=e("url"),j=e("./loading"),E=e("./platform"),N=window.gitbook,S="undefined"!=typeof history.pushState,A=location.href;t.exports={init:x,goNext:y,goPrev:b}},{"./loading":12,"./platform":14,jquery:1,url:7}],14:[function(e,t,n){var r=e("jquery");t.exports={isMobile:function(){return r(document).width()<=600},isSmallScreen:function(){return r(document).width()<=1240}}},{jquery:1}],15:[function(e,t,n){function r(e,t){null!=l.state&&o()==e||(null==t&&(t=!0),l.state.$book.toggleClass("without-animation",!t),l.state.$book.toggleClass("with-summary",e),l.storage.set("sidebar",o()))}function o(){return l.state.$book.hasClass("with-summary")}function i(){u.isMobile()||r(l.storage.get("sidebar",!0),!1),s(document).on("click",".book-summary li.chapter a",function(e){u.isMobile()&&r(!1,!1)})}function a(e){var t=s(".book-summary");t.find("li").each(function(){var t=s(this).data("path"),n=null==e||e.indexOf(t)!==-1;s(this).toggle(n),n&&s(this).parents("li").show()})}var s=e("jquery"),u=e("./platform"),l=window.gitbook;t.exports={init:i,isOpen:o,toggle:r,filter:a}},{"./platform":14,jquery:1}],16:[function(e,t,n){function r(){return"btn-"+g++}function o(e,t,n,r){var o=e.children(t).length;n<0&&(n=Math.max(0,o+1+n)),e.append(r),n<o&&e.children(t).eq(n).before(e.children(t).last())}function i(e){e.preventDefault()}function a(e){var t=p("<div>",{class:"dropdown-menu",html:'<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>'});if("string"==typeof e)t.append(e);else{var n=e.map(function(e){return p.isArray(e)?e:[e]});n.forEach(function(e){var n=p("<div>",{class:"buttons"}),r="size-"+e.length;e.forEach(function(e){e=p.extend({text:"",className:"",onClick:i},e||{});var t=p("<button>",{class:"button "+r+" "+e.className,text:e.text});t.click(e.onClick),n.append(t)}),t.append(n)})}return t}function s(e){return e=p.extend({label:"",icon:"",text:"",position:"left",className:"",onClick:i,dropdown:null,index:null,id:r()},e||{}),d.push(e),u(e),e.id}function u(e){var t,n=p(".book-header"),r=n.find("h1"),i="pull-"+e.position,s=p("<a>",{class:"btn",text:e.text?" "+e.text:"","aria-label":e.label,href:"#"});if(s.click(e.onClick),e.icon&&p("<i>",{class:e.icon}).prependTo(s),e.dropdown){var u=p("<div>",{class:"dropdown "+i+" "+e.className});s.addClass("toggle-dropdown"),u.append(s);var l=a(e.dropdown);l.addClass("dropdown-"+("right"==e.position?"left":"right")),u.append(l),t=u}else s.addClass(i),s.addClass(e.className),t=s;t.addClass("js-toolbar-action"),p.isNumeric(e.index)&&e.index>=0?o(n,".btn, .dropdown, h1",e.index,t):t.insertBefore(r)}function l(){p(".js-toolbar-action").remove(),d.forEach(u)}function c(e){d=p.grep(d,function(t){return t.id!=e}),l()}function f(e){d=p.grep(d,function(t){return e.indexOf(t.id)==-1}),l()}var p=e("jquery"),h=window.gitbook,d=[],g=0;h.events.on("page.change",function(){l()}),t.exports={createButton:s,removeButton:c,removeButtons:f}},{jquery:1}]},{},[10]);
</code></pre>
</div>
</div>
<div class="changelog--file -added">
<span class="changelog--badge">added</span>
<a class="changelog--filename" target="_self" href="/_book/index.html">_book/index.html</a>
<div class="changelog--change -show-less" id='ba350d4__book_index_html'>
<a class="changelog--disclosure" onclick="changeLogToggle('ba350d4__book_index_html')">
<span class="-more">Show More</span>
<span class="-less">Show Less</span>
</a>
<pre><code class="lang-diff">
+
+<!DOCTYPE HTML>
+<html lang="" >
+ <head>
+ <meta charset="UTF-8">
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+ <title>Mojaloop Overview · GitBook</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="description" content="">
+ <meta name="generator" content="GitBook 3.2.3">
+
+
+
+
+ <link rel="stylesheet" href="gitbook/style.css">
+
+
+
+
+ <link rel="stylesheet" href="gitbook/gitbook-plugin-swagger/plugin.css">
+
+
+
+ <link rel="stylesheet" href="gitbook/gitbook-plugin-insert-logo/plugin.css">
+
+
+
+ <link rel="stylesheet" href="gitbook/gitbook-plugin-collapsible-chapters/collapsible-chapters.css">
+
+
+
+ <link rel="stylesheet" href="gitbook/gitbook-plugin-back-to-top-button/plugin.css">
+
+
+
+ <link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
+
+
+
+ <link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
+
+
+
+ <link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
+
+
+
+ <link rel="stylesheet" href="gitbook/gitbook-plugin-theme-api/theme-api.css">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <meta name="HandheldFriendly" content="true"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
+ <link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
+
+
+ <link rel="next" href="contributors-guide/" />
+
+
+
+ </head>
+ <body>
+
+<div class="book">
+ <div class="book-summary">
+
+
+<div id="book-search-input" role="search">
+ <input type="text" placeholder="Type to search" />
+</div>
+
+
+ <nav role="navigation">
+
+
+
+<ul class="summary">
+
+
+
+
+
+
+
+
+
+ <li class="chapter active" data-level="1.1" data-path="./">
+
+ <a href="./">
+
+
+ Mojaloop Overview
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2" data-path="contributors-guide/">
+
+ <a href="contributors-guide/">
+
+
+ Contributors Guide
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1" data-path="contributors-guide/mojaloop-deployment/">
+
+ <a href="contributors-guide/mojaloop-deployment/">
+
+
+ Mojaloop Deployment
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.1.1" data-path="contributors-guide/mojaloop-deployment/current-versions.html">
+
+ <a href="contributors-guide/mojaloop-deployment/current-versions.html">
+
+
+ Current Version
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2" data-path="contributors-guide/standards/">
+
+ <a href="contributors-guide/standards/">
+
+
+ Standards
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.2.1" data-path="contributors-guide/standards/versioning.html">
+
+ <a href="contributors-guide/standards/versioning.html">
+
+
+ Versioning
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.2.2" data-path="contributors-guide/standards/creating-new-features.html">
+
+ <a href="contributors-guide/standards/creating-new-features.html">
+
+
+ Creating new Features
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3" data-path="contributors-guide/tools-and-technologies/">
+
+ <a href="contributors-guide/tools-and-technologies/">
+
+
+ Tools and Technologies
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.3.1" data-path="contributors-guide/tools-and-technologies/pragmatic-rest.html">
+
+ <a href="contributors-guide/tools-and-technologies/pragmatic-rest.html">
+
+
+ Pragmatic REST
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3.2" data-path="contributors-guide/tools-and-technologies/code-quality-metrics.html">
+
+ <a href="contributors-guide/tools-and-technologies/code-quality-metrics.html">
+
+
+ Code Quality Metrics
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.3.3" data-path="contributors-guide/tools-and-technologies/automated-testing.html">
+
+ <a href="contributors-guide/tools-and-technologies/automated-testing.html">
+
+
+ Automated Testing
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4" data-path="contributors-guide/documentation/">
+
+ <a href="contributors-guide/documentation/">
+
+
+ Documentation
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.2.4.1" data-path="contributors-guide/documentation/api-documentation.html">
+
+ <a href="contributors-guide/documentation/api-documentation.html">
+
+
+ API Documentation
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.2.4.2" data-path="contributors-guide/documentation/documentation-style-guide.html">
+
+ <a href="contributors-guide/documentation/documentation-style-guide.html">
+
+
+ Documentation Style Guide
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.2.5" data-path="contributors-guide/frequently-asked-questions.html">
+
+ <a href="contributors-guide/frequently-asked-questions.html">
+
+
+ Frequently Asked Questions
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.3" data-path="mojaloop-background/">
+
+ <a href="mojaloop-background/">
+
+
+ Mojaloop Background
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.3.1" data-path="mojaloop-background/core-scenarios.html">
+
+ <a href="mojaloop-background/core-scenarios.html">
+
+
+ Core Scenarios
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.3.2" data-path="mojaloop-background/level-one-principles.html">
+
+ <a href="mojaloop-background/level-one-principles.html">
+
+
+ Level One Principles
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.4" data-path="mojaloop-technical-overview/">
+
+ <a href="mojaloop-technical-overview/">
+
+
+ Mojaloop Technical Overview
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.4.1" data-path="mojaloop-technical-overview/mojaloop-components.html">
+
+ <a href="mojaloop-technical-overview/mojaloop-components.html">
+
+
+ Mojaloop Hub
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.2" data-path="mojaloop-technical-overview/central-ledger.html">
+
+ <a href="mojaloop-technical-overview/central-ledger.html">
+
+
+ Central-Ledger Services
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.3" data-path="mojaloop-technical-overview/account-lookup-service.html">
+
+ <a href="mojaloop-technical-overview/account-lookup-service.html">
+
+
+ Account-Lookup Service
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.4" data-path="mojaloop-technical-overview/central-settlements-service.html">
+
+ <a href="mojaloop-technical-overview/central-settlements-service.html">
+
+
+ Central-Settlements Service
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.4.5" data-path="mojaloop-technical-overview/fraud-services.html">
+
+ <a href="mojaloop-technical-overview/fraud-services.html">
+
+
+ Fraud Services
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.5" data-path="api/">
+
+ <a href="api/">
+
+
+ APIs
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.5.1" data-path="api/mojaloop-api-specification.html">
+
+ <a href="api/mojaloop-api-specification.html">
+
+
+ Mojaloop
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.5.2" data-path="api/als-oracle-api-specification.html">
+
+ <a href="api/als-oracle-api-specification.html">
+
+
+ ALS Oracle
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.6" data-path="repositories/">
+
+ <a href="repositories/">
+
+
+ Repo Details
+
+ </a>
+
+
+
+ <ul class="articles">
+
+
+ <li class="chapter " data-level="1.6.1" data-path="repositories/helm.html">
+
+ <a href="repositories/helm.html">
+
+
+ Helm
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.6.2" data-path="repositories/project.html">
+
+ <a href="repositories/project.html">
+
+
+ Project
+
+ </a>
+
+
+
+ </li>
+
+
+ </ul>
+
+ </li>
+
+ <li class="chapter " data-level="1.7" data-path="mojaloop-roadmap.html">
+
+ <a href="mojaloop-roadmap.html">
+
+
+ Mojaloop Roadmap
+
+ </a>
+
+
+
+ </li>
+
+ <li class="chapter " data-level="1.8" data-path="changelog.html">
+
+ <a href="changelog.html">
+
+
+ Changelog
+
+ </a>
+
+
+
+ </li>
+
+
+
+
+ <li class="divider"></li>
+
+ <li>
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
+ Published with GitBook
+ </a>
+ </li>
+</ul>
+
+
+ </nav>
+
+
+ </div>
+
+ <div class="book-body">
+
+ <div class="body-inner">
+
+
+
+<div class="book-header" role="navigation">
+
+
+ <!-- Title -->
+ <h1>
+ <i class="fa fa-circle-o-notch fa-spin"></i>
+ <a href="." >Mojaloop Overview</a>
+ </h1>
+</div>
+
+
+
+
+ <div class="page-wrapper" tabindex="-1" role="main">
+ <div class="page-inner">
+
+<div id="book-search-results">
+ <div class="search-noresults">
+
+ <section class="normal markdown-section">
+
+ <h1 id="mojaloop-overview">Mojaloop Overview</h1>
+<p>Mojaloop is open source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.</p>
+<p>The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers (DFSPs) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.</p>
+<p><img src="assets/Diagrams/ArchitectureDiagrams/Arch-Mojaloop-end-to-end-simple.svg" alt="Mojaloop Solution"></p>
+<p>Our model addresses these issues in several key ways:</p>
+<ul>
+<li>A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.</li>
+<li>A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.</li>
+<li>Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.</li>
+</ul>
+<p>The intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.</p>
+
+
+ </section>
+
+ </div>
+ <div class="search-results">
+ <div class="has-results">
+
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+
+ </div>
+ <div class="no-results">
+
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+
+
+ </div>
+
+ <script>
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Mojaloop Overview","level":"1.1","depth":1,"next":{"title":"Contributors Guide","level":"1.2","depth":1,"path":"contributors-guide/README.md","ref":"contributors-guide/README.md","articles":[{"title":"Mojaloop Deployment","level":"1.2.1","depth":2,"path":"contributors-guide/mojaloop-deployment/README.md","ref":"contributors-guide/mojaloop-deployment/README.md","articles":[{"title":"Current Version","level":"1.2.1.1","depth":3,"path":"contributors-guide/mojaloop-deployment/current-versions.md","ref":"contributors-guide/mojaloop-deployment/current-versions.md","articles":[]}]},{"title":"Standards","level":"1.2.2","depth":2,"path":"contributors-guide/standards/README.md","ref":"contributors-guide/standards/README.md","articles":[{"title":"Versioning","level":"1.2.2.1","depth":3,"path":"contributors-guide/standards/versioning.md","ref":"contributors-guide/standards/versioning.md","articles":[]},{"title":"Creating new Features","level":"1.2.2.2","depth":3,"path":"contributors-guide/standards/creating-new-features.md","ref":"contributors-guide/standards/creating-new-features.md","articles":[]}]},{"title":"Tools and Technologies","level":"1.2.3","depth":2,"path":"contributors-guide/tools-and-technologies/README.md","ref":"contributors-guide/tools-and-technologies/README.md","articles":[{"title":"Pragmatic REST","level":"1.2.3.1","depth":3,"path":"contributors-guide/tools-and-technologies/pragmatic-rest.md","ref":"contributors-guide/tools-and-technologies/pragmatic-rest.md","articles":[]},{"title":"Code Quality Metrics","level":"1.2.3.2","depth":3,"path":"contributors-guide/tools-and-technologies/code-quality-metrics.md","ref":"contributors-guide/tools-and-technologies/code-quality-metrics.md","articles":[]},{"title":"Automated Testing","level":"1.2.3.3","depth":3,"path":"contributors-guide/tools-and-technologies/automated-testing.md","ref":"contributors-guide/tools-and-technologies/automated-testing.md","articles":[]}]},{"title":"Documentation","level":"1.2.4","depth":2,"path":"contributors-guide/documentation/README.md","ref":"contributors-guide/documentation/README.md","articles":[{"title":"API Documentation","level":"1.2.4.1","depth":3,"path":"contributors-guide/documentation/api-documentation.md","ref":"contributors-guide/documentation/api-documentation.md","articles":[]},{"title":"Documentation Style Guide","level":"1.2.4.2","depth":3,"path":"contributors-guide/documentation/documentation-style-guide.md","ref":"contributors-guide/documentation/documentation-style-guide.md","articles":[]}]},{"title":"Frequently Asked Questions","level":"1.2.5","depth":2,"path":"contributors-guide/frequently-asked-questions.md","ref":"contributors-guide/frequently-asked-questions.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"README.md","mtime":"2019-03-11T17:20:09.737Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":".","book":{"language":""}});
+ });
+
+
+# Mojaloop Background
+
+### Mojaloop Background
+
+Mojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.
+
+Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
+
+With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+
+
+
+
+
+
+
+ Core Scenarios · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+About Mojaloop Scenarios
+Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals (which are handled as a separate transaction). The most common paths include:
+
+Send money to anyone
+Buy Goods
+Bulk Payments
+Tiers/Risk Level
+Fraud Checks and Blacklists
+Account Management
+Check Account and POS
+
+Scenario Descriptions
+Send money to anyone
+Hamim is working on his farm in Northern Uganda when he receives an urgent phone call from his brother, Kani. Kani is low on money and will not get paid until next week. Kani has no money to pay for food for his family and asks Hamim to help him out. Hamim and Kani have no means of transportation and it would take several days for Hamim to get to his Kani's home in Southern Uganda. While they both have mobile flip phones, they use different financial service providers. Kani tells Hamim that he needs 5,000 shillings to buy food until he gets paid next week for his job working in a local field. Hamin agrees to send Kani the money.
+ *** Mojaloop technology does its job ***
+
+Because Hamim has sent money to Kani before he has his information on his phone. Hamim sees Kani's name come up on his phone and he starts the transaction. He also sees the total fees and any exchange rates he has to pay before he sends the money. He is happy for that validation and that the transaction goes the same way every time. In under 30 seconds, Hamim is able to send the money to his Kani and verifies that he got it. Hamim is happy he was able to help out Kani and his family so quickly so they can buy food.
+Buy Goods - Pending Transactions
+Venya is waiting in line to buy plantains at her local market. She is corralling her elder child with one hand and has her baby in a sling. She often comes to this seller and she knows he has a good price. She also knows that even though she carries no money and he is not on her financial network, she can buy from him. As she approaches the head of the line she juggles the children and pulls out a simple flip phone. She tells him 1.5 kilograms and he tells her the price, which she agrees to.
+ *** Mojaloop technology does its job ***
+
+Because she's been here before the merchant already has her information on his phone. The only information he has is her user number. This makes Venya feel safe that the merchant does not have her mobile phone number. The merchant enters in the amount for the plantains. Almost instantaneously, Venya sees the merchants invoice on her phone and she is glad she is able to pay for the transaction using her mWallet account. She is happy that the transaction goes the same way every time, because half of her attention is on the children. She has friends who can't read and they are able to buy things this way too by following the simple order of the transaction. In under 30 seconds, she is able to send the money to the merchant and both Venya and the merchant get confirmation of the transaction. She tells the elder child to pick up her plantains and makes room for the next person in line.
+Bulk Payments
+Nikisha is the accountant for one of the largest manufacturing companies in Johannesburg and employs over 250 workers. Their company uses a time and attendance system to track the number of hours that each employee works along with their hourly rate and employee ID. On a weekly basis Nikisha gets an update on her bulk payment system that shows all the employees, their user ID along and amount to be paid. Since the companies employees all have different financial service providers this system makes it really easy for Nikisha to confirm and distribute their pay with a couple of clicks. The company has a high turnover rate so new employees who get their first paycheck are automatically prompted to open an account as long as they provided a valid mobile number when they started. As Nikisha gets ready to send out this week's payments she opens up a bulk payment report.
+*** Mojaloop technology does its job ***
+
+The bulk report for payments comes up by date range and, since Nikisha does this weekly, there are several items she needs to verify each time. Specifically, she looks for any errors or alerts for employees with invalid phone numbers, names not matching or other anomalies. Nikisha has the ability to follow-up with her co-workers or employees directly to fix these errors before sending out the payments. In addition, Nikisha is also notified of any employees who don't have an account setup. For these users, Nikisha is still able to push a payment through and the employee will be prompted by text message to open an account. Nikisha is thankful she has this process that makes it much easier to distribute funds. Once Nikisha has completed her validation, she sends it to her supervisor for final approval. Nikisha is glad to have this system in place because several years ago, Nikisha and her supervisor had to pay employees in cash and use a manual system to verify payments were received which made her feel very uneasy.
+Tiers/Risk Levels
+Salem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor, manage and reduce risk for the company. order to do so each new user ID in the system is assigned a default tier level which means they can only transfer a small number and amount of funds in and out of the system over specific periods of time. As users acquire greater balances in their accounts and hold their accounts for longer periods of time their tier levels improve. Tier levels are handled automatically by the system so Salem does not need to worry about assigning or changing these levels under normal circumstances. Part of Salem's job as an auditor is to review the daily reports to ensure that everyone's funds are safe and secure and he kicks off his daily report to review the accounts.
+*** Mojaloop technology does its job ***
+
+This morning when Salem reviews these reports he notices that one specific user ID has 32 outgoing transactions in one day which exceeds their daily count of 25. This seems very suspicious to Salem and he goes ahead and contacts the customer. It turns out that this customer is a local merchant that owns a store. The merchant explains that he has to go to the market on a weekly basis to get ingredients for his restaurant and it is not uncommon for him and his staff to make more than 25 purchases in one day. Although this customer has only been with Salem's bank for a month then have a healthy balance in their account. Salem goes ahead and upgrades the customers tier level to increase the daily and weekly transaction counts.
+Fraud Checks and Blacklists
+Salem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor and stop any fraudulent activity for the company. While the company has a set of rules that might flag individuals for Salem to investigate, he also has the authority to screen any user ID for fraudulent activities at any time. Each time Salem performs a fraud check on a user ID, the system records the date of the last check along with any comments that Salem might have made. This makes it very easy for Salem to search for IDs that might have never been checked for fraud or have not been checked in a very long time. Salem has been monitoring one particular ID that seems to have had an increased amount of incoming funds deposited into their account on a daily basis. Today he does a search of the user ID to investigate further.
+*** Mojaloop technology does its job ***
+
+When the user ID is retrieved Salem is able to see the customer's name, birthdate and national ID number. He also sees any additional IDs and the account type associated with this customer. Upon further inspection Salem sees once again the number and amount of transactions deposited into this account has doubled again today. Salem suspects that this user is involved in some illegal activity and would like to send this up to his supervisor to get someone to do a deeper investigation. In the meantime to ensure that the illegal funds don't continue to come into the system, Salem decides to 'freeze' the account. Salem does this by checking the blacklist button and indicating a reason for the blacklist. At this point any future deposits or withdrawals for this User ID will be denied until someone from the Bank removes them from the blacklist. Salem feels good that no additional funds that might of come from illegal or unapproved sources will be deposited into this customer account.
+Account Management
+Tadeo just bought his first mobile flip phone for him and his family to share. He is happy that he finally has a phone that he can use in emergencies, but he can also finally keep his money secure by opening up a bank account. Tadeo has never had a bank account since he lives in a very remote part of Africa with no personal means of transportation. Tadeo and his family have to rely on bartering or cash to buy any goods they need at the market. Although Tadeo is not proficient in reading, he is able to easily use his phone to setup and account for him and his family by following a couple of easy to read menu steps.
+*** Mojaloop technology does its job ***
+
+Tadeo was able to use his phone to create an mWallet account using his National ID. He was also asked to create a unique pin which made him feel secure in case him or someone in the family lost the phone. Tadeo is the primary account owner and he was able to easily create a new account for his oldest son. He was very pleased that he could have separate accounts for his son. His son is married and lives with Tadeo but does not have a phone. Since his son works it is only fair that they should be able to spend his money on goods and foods that he and his wife prefer. Tadeo also adds his wife as a user on his account. He allows his wife to be a signatory since she does most of the shopping at the local market and now has the ability to pay for goods using this phone. Tadeo is very happy that his wife no longer needs to have cash or carry barter goods to the market.
+Check Account and POS
+Jahari has a flip phone that all the family uses and he has setup different user numbers for each family member. Jahari is at the local market and needs to buy some meat for his family. Before he does, he wants to make sure he has enough funds in his account to purchase the goods and still have enough left over to set aside for future medical expenses and education. Jahari is happy that his money is secure and he is able to check his account balance anytime he needs to by simply entering his secure pin on his phone. Once he confirms his balance he will buy some goat and cow meat at the market.
+ *** Mojaloop technology does its job ***
+
+After Jahari has entered his pin on his phone he is able to see his account balance. He is also able to see to see any of his recent transactions as well as any fees that were associated with these transactions. After confirming his available funds he picks out his meat and brings it up to the merchant for payment. The merchant does a lot of business in this market and has a point of sales device. This is very helpful for Jahari and his family since they only have one phone and many times his wife or his children go to the market and do not have the phone with them. The merchant is able to enter the purchase amount on the POS device and Jahari or any of his family members securely enters their user number and reviews the transaction. Jahari confirms that the amount on the POS machine matches what the merchant verbally told him and he enters his pin to approve the transaction.
+*** Mojaloop technology does its job ***
+
+The merchant gets confirmation that he received payment and he prints a receipt for Jahari. Since Jahari has his phone with him today he also re-checks his account balance again to confirm that appropriate funds were taken from his account. Jahari is happy that this is an easy process and he can see that he has plenty of money left to set aside this month for his family to use on education or health expenses.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Core Scenarios","level":"1.3.1","depth":2,"next":{"title":"Level One Principles","level":"1.3.2","depth":2,"path":"mojaloop-background/level-one-principles.md","ref":"mojaloop-background/level-one-principles.md","articles":[]},"previous":{"title":"Mojaloop Background","level":"1.3","depth":1,"path":"mojaloop-background/README.md","ref":"mojaloop-background/README.md","articles":[{"title":"Core Scenarios","level":"1.3.1","depth":2,"path":"mojaloop-background/core-scenarios.md","ref":"mojaloop-background/core-scenarios.md","articles":[]},{"title":"Level One Principles","level":"1.3.2","depth":2,"path":"mojaloop-background/level-one-principles.md","ref":"mojaloop-background/level-one-principles.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-background/core-scenarios.md","mtime":"2019-03-05T16:37:38.691Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+Mojaloop Background
+Mojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.
+Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
+With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: Ripple, Dwolla, ModusBox, Software Group and Crosslake Technologies. It is available now as an open-source project. Free to be used and adapted by anyone under the Apache 2.0 license. For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit LevelOneProject.org.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Mojaloop Background","level":"1.3","depth":1,"next":{"title":"Core Scenarios","level":"1.3.1","depth":2,"path":"mojaloop-background/core-scenarios.md","ref":"mojaloop-background/core-scenarios.md","articles":[]},"previous":{"title":"Frequently Asked Questions","level":"1.2.5","depth":2,"path":"contributors-guide/frequently-asked-questions.md","ref":"contributors-guide/frequently-asked-questions.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-background/README.md","mtime":"2019-03-07T10:27:09.680Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+The Level One Project Guide outlines a vision of how an inclusive digital financial services system can work for the benefit of poor people. The underlying design principles of the Guide include:
+
+A push payment model with immediate funds transfer and same day settlement
+Open-loop interoperability between providers
+Adherence to well-defined and adopted international standards
+Adequate system-wide shared fraud and security protection
+Efficient and proportional identity and know-your-customer (KYC) requirements
+Meeting or exceeding the convenience, cost and utility of cash
+
+By utilizing an open, digital approach to transactions, and partnering with organizations across the public and private sectors, the Level One Project Guide aims to provide access to a robust, low-cost shared digital financial services infrastructure, sparking innovation from new and existing participants, reducing risk, and generating substantial value for providers, individuals and economies in developing markets. Additional resources have been created to help governments, NGOs and financial service providers successfully implement these changes.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Level One Principles","level":"1.3.2","depth":2,"next":{"title":"Mojaloop Technical Overview","level":"1.4","depth":1,"path":"mojaloop-technical-overview/README.md","ref":"mojaloop-technical-overview/README.md","articles":[{"title":"Mojaloop Hub","level":"1.4.1","depth":2,"path":"mojaloop-technical-overview/mojaloop-components.md","ref":"mojaloop-technical-overview/mojaloop-components.md","articles":[]},{"title":"Central-Ledger Services","level":"1.4.2","depth":2,"path":"mojaloop-technical-overview/central-ledger.md","ref":"mojaloop-technical-overview/central-ledger.md","articles":[]},{"title":"Account-Lookup Service","level":"1.4.3","depth":2,"path":"mojaloop-technical-overview/account-lookup-service.md","ref":"mojaloop-technical-overview/account-lookup-service.md","articles":[]},{"title":"Central-Settlements Service","level":"1.4.4","depth":2,"path":"mojaloop-technical-overview/central-settlements-service.md","ref":"mojaloop-technical-overview/central-settlements-service.md","articles":[]},{"title":"Fraud Services","level":"1.4.5","depth":2,"path":"mojaloop-technical-overview/fraud-services.md","ref":"mojaloop-technical-overview/fraud-services.md","articles":[]}]},"previous":{"title":"Core Scenarios","level":"1.3.1","depth":2,"path":"mojaloop-background/core-scenarios.md","ref":"mojaloop-background/core-scenarios.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-background/level-one-principles.md","mtime":"2019-03-05T16:37:38.690Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+Mojaloop Roadmap
+Functional Epics
+
+Event Logging Framework: Support operational reporting and auditing of processing
+Error Handling Framework: Consistent reporting in line with specification and support operational auditing
+API Gateway: Provide role, policy-based access, security, abstraction, throttling & control, identity management
+Endpoints for P2P, Merchant: Provide endpoints to support P2P and Merchant payments
+Settlements: Complete settlements process to handle failures and reconciliation positions
+Central directory/Account lookup service: Provide native implementation for ALS to confirm the API specification to provide user lookup
+Fraud & Risk Management System: Provide support for a fraud and risk management system
+Forensic Logging: Support forensic logging to support auditing and reporting
+Reporting API: Provide an API for reporting
+
+Operational Epics
+
+Testing Framework: Provide a framework for automated regression, functional and other testing to ensure quality
+Performance Improvements: Provide a framework for automated regression, functional and other testing to ensure quality
+ELK framework & logging: Provide framework or dashboards for Operational support, Debugging and Resolving issues
+DevOps: Provide flexibility, dynamism in deployments, improve monitoring and reliability mechanisms
+Rules Engine: Provide a framework to enforce, implement Business, Scheme rules
+
+Non-Functional Epics
+
+Deprecate Postgres: Avoid usage of multiple databases to improve supportability and maintenance and move to MySQL
+Security & Threat Modeling: Address security vulnerabilities, issues and provide a report on status of the System's security so that they can be addressed
+Documentation: Update documentation to support adoption by community, for labs, deployment by various partners
+API-Led Design: Refactor central services so that schema validation, paths can be addressed thoroughly (automatically) and decrease maintenance, development effort (for those services don't already follow this)
+API-led connectivity is a methodical way to connect data to applications through reusable and purposeful APIs.
+
+Detailed Roadmap Items - (Exported from StoriesOnBoard)
+
+
+
+Activity
+Task
+Subtask
+Subtask description
+Status
+Estimation
+Release
+Personas
+
+
+
+
+High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green.
+Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray
+? A third release with focus on Security, Auditing, Operational readiness
+Includes features/functionality missing from PI5 and PI6
+Todo
+
+
+Useful Resources
+
+
+High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green.
+Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray
+Release 5.0.0 - First version after the MVP with critical bug fixes and key features
+First version after the MVP with critical bug fixes and features focusing on functionality needed with inputs from early adopters
+Todo
+
+PI-5
+Useful Resources
+
+
+High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green.
+Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray
+Release 6.0.0 - A second release after the MVP with key features, streamlined deployment, on-boarding and monitoring capabilities
+
+Todo
+
+PI-6
+Useful Resources
+
+
+NFR: DFSP Handler Provisioning
+The Switch system scales when on-boarding FSPs
+Design provisioning & management of FSP onboarding
+Description: End state:
+Ready
+
+PI-5
+Hub Tech Ops Hub Operator DFSP System Integrators DFSP
+
+
+NFR: DFSP Handler Provisioning
+The Switch system scales when on-boarding FSPs
+Identify Approaches & Technologies for Management & Balancing of FSPs PoC
+
+Ready
+
+PI-5
+Hub Tech Ops Hub Operator DFSP System Integrators DFSP
+
+
+NFR: DFSP Handler Provisioning
+The Switch system scales when on-boarding FSPs
+PoC for Management & Balancing of FSPs on Test Handlers to determine the best approach
+
+Ready
+
+PI-5
+Hub Tech Ops Hub Operator DFSP System Integrators DFSP
+
+
+NFR: DFSP Handler Provisioning
+The Switch system scales when on-boarding FSPs
+Assess Performance capabilities, impact of the PoC
+
+Todo
+
+PI-5
+Hub Tech Ops Hub Operator DFSP System Integrators DFSP
+
+
+NFR: DFSP Handler Provisioning
+The Switch system scales when on-boarding FSPs
+Management & Balancing of FSPs for High-Availability and On-boarding for non-FSP Specific Handlers
+
+Ready
+
+PI-6
+Hub Tech Ops Hub Operator DFSP System Integrators DFSP
+
+
+NFR: DFSP Handler Provisioning
+The Switch system scales when on-boarding FSPs
+Management & Balancing of FSPs for High-Availability and On-boarding for FSP Specific Handlers
+
+Ready
+
+PI-6
+Hub Tech Ops Hub Operator DFSP System Integrators DFSP
+
+
+NFR: DFSP Handler Provisioning
+The Switch system scales when on-boarding FSPs
+QA, testing - validation
+
+Ready
+
+PI-6
+Hub Tech Ops Hub Operator DFSP System Integrators DFSP
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+Access control policies
+
+Todo
+
+
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+Apply validation controls at the API Gateway level
+
+Todo
+
+
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+Confirm the technology for API Gateway, Developer Portal
+Confirm that WSO2 is the way to go or if there's a better alternative (better suited for Open Source)
+Todo
+
+PI-5
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+Design solution with WSO2 API Gateway
+Security: 1. Inbound rules 1. Outbound rules 1. Headers validation 1. Throttling
+Todo
+
+PI-5
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+Setup API Gateway using WSO2 - Infrastructure
+
+Ready
+
+PI-5
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+Integration with Switch services (ml-api-adapter)
+
+Ready
+
+PI-5
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+Provide Authentication
+
+Todo
+
+PI-6
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+Developer Portal (FSPs, Hub Operator)
+
+Ready
+
+PI-6
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+Developer on-boarding
+
+Todo
+
+PI-6
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: API Gateway
+Gateway, Developer Portal
+QA, Testing
+
+Todo
+
+PI-6
+Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: DevOps, CI/CD
+Deployment automation and Lab work
+Making existing helm charts more maintainable & manageable
+
+Ready
+
+PI-5
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+Deployment automation and Lab work
+Automate Lab Setup - chooses services (things like Gateway, etc)
+Possibly using something like Terraform, Vagrant
+Todo
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+Deployment automation and Lab work
+Validate Lab envt setup using a test framework
+
+Todo
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+API Gateway is incorporated into the CI/CD pipeline & deployments are automated
+Incorporating the API Gateway into the deployment process
+
+Todo
+
+PI-5
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+API Gateway is incorporated into the CI/CD pipeline & deployments are automated
+Incorporating the API Gateway into the CI/CD pipeline
+
+Todo
+
+PI-5
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+API Gateway is incorporated into the CI/CD pipeline & deployments are automated
+Automate deployment of artifacts as part of CI/CD pipeline
+Currently the artifacts are published to dockerhub/npm repos based on the outcome of the testing phases but the deployment fails as quite a bit of automation is needed. This involves updating helm charts dynamically, values files and other such resources. This would tremendously reduce the amount of time involved in getting out a deployment after a release. Currently we do the deployment manually (which is not that bad) but this can be eliminated.
+Ready
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+API Gateway is incorporated into the CI/CD pipeline & deployments are automated
+Integrate Contract, Interface and Functional Tests in CI/CD Pipeline
+
+Ready
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+Monitoring, Management of resources
+Enable health checks to report holistically
+
+Ready
+
+PI-5
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+Monitoring, Management of resources
+Support for Zipkin
+
+Todo
+
+PI-5
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+Monitoring, Management of resources
+ELK: Support for Alerts, Notifications
+
+Ready
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+Monitoring, Management of resources
+Integrating ELK with Event Logging Framework, etc
+
+Ready
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: DevOps, CI/CD
+Monitoring, Management of resources
+ELK Dashboards for KPIs, etc
+
+Ready
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care
+
+
+NFR: Quality Assurance, Testing
+Testing, QA
+Standardized simulator (mock FSPs) to support automated testing
+1. Simulators that dynamically generate conditions, fulfilments etc as part of the end-to-end proccess 1. Include error end-points (addressed in another item) 1. Perform validations 1. Rework the simulator to generate the end-points based on the Swagger (to easily validate): API first approach
+Ready
+
+PI-5
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+Testing, QA
+Automated Functional Tests - document coverage
+
+Ready
+
+PI-5
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+Testing, QA
+Periodic comprehensive functional testing on deployments
+
+Todo
+
+PI-5
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+Testing, QA
+Automated Integration Tests
+
+Ready
+
+PI-6
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+Testing, QA
+Automated Contract Tests
+Contract - meaning the API Specification itself.. Automated tests to ensure the Switch adheres to the API/Swagger specification, example, headers, schema, etc This ensures the users of the System that the implementation conforms to the API Specification.
+Ready
+
+PI-6
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+Testing, QA
+Update Automated Contract, Integration, Functional Tests
+
+Ready
+
+PI-6
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+QA, Bug Fixes
+QA, Bug Fixes
+
+Ready
+
+
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+QA, Bug Fixes
+Bug Fixes, QA
+
+Ready
+
+PI-5
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+QA, Bug Fixes
+QA, Bug Fixes
+
+Ready
+
+PI-6
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+Performance Testing, Baselining
+Performance testing & Improvements
+
+Ready
+
+
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+Performance Testing, Baselining
+Performance testing baselining after addition of new features, frameworks
+Towards the end of the PI/Sprint
+Ready
+
+PI-5
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+Performance Testing, Baselining
+Automated Performance Tests
+
+Ready
+
+PI-6
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+NFR: Quality Assurance, Testing
+Performance Testing, Baselining
+Regular Performance testing as part of CI/CD
+
+Ready
+
+PI-6
+Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team
+
+
+FR: Settlement Management
+Settlements Management
+Enhance Alerts and Notifications
+
+Ready
+
+PI-5
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Settlements Management
+Follow-up items to be confirmed after the OSS Settlements API is drafted
+
+Todo
+
+PI-5
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Settlements Management
+Handle failed acknowledgements for Settlements
+
+Ready
+8.00
+PI-6
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Settlements Management
+Settlement Reconciliation Reports
+
+Ready
+
+PI-6
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Reporting API for FSP Consumption
+Identification of Framework for reporting
+
+Todo
+
+PI-5
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Reporting API for FSP Consumption
+Identify data sets that can be queried - Transactions
+
+Ready
+
+PI-5
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Reporting API for FSP Consumption
+Settlements reporting format decisions
+
+Todo
+
+PI-5
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Reporting API for FSP Consumption
+Identify data sets that can be queried - Transfers
+
+Ready
+
+PI-6
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Reporting API for FSP Consumption
+Standardize query API
+
+Ready
+
+PI-6
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Reporting API for FSP Consumption
+Implementation of reporting functionality
+
+Todo
+
+PI-6
+DFSP Switch Hub Operator Hub Finance Team
+
+
+FR: Settlement Management
+Reporting API for FSP Consumption
+QA, testing
+
+Todo
+
+PI-6
+DFSP Switch Hub Operator Hub Finance Team
+
+
+NFR: Implementation Topology Guidelines
+Deployment Topology Guidelines
+Scaling guidelines for deployment
+
+Todo
+
+
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Deployment Topology Guidelines
+Guidelines for optimal performance
+
+Todo
+
+
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Deployment Topology Guidelines
+HA guidelines for deployment
+
+Todo
+
+
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Deployment Topology Guidelines
+Recommended deployment topologies
+
+Todo
+
+PI-5
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Deployment Topology Guidelines
+Security guidelines for implementation, deployment
+
+Todo
+
+PI-5
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Deployment Topology Guidelines
+Documentation - clarity, remove ambiguity. Review
+
+Todo
+
+PI-5
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Deployment Topology Guidelines
+Guidelines for cloud/on-prem providers
+
+Todo
+
+PI-6
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Workshops
+Workshops for Hub Operators
+
+Todo
+
+PI-5
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Workshops
+Workshops for OSS contributors
+
+Todo
+
+PI-5
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Workshops
+Workshops for FSP and System Integrators
+
+Todo
+
+PI-6
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Workshops
+Workshops for OSS contributors - 2
+
+Todo
+
+PI-6
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Implementation Topology Guidelines
+Workshops
+Workshops for Hub Operators - 2
+
+Todo
+
+PI-6
+Switch DFSP System Integrators Hub Tech Ops
+
+
+NFR: Event Logging
+Event Logging Framework
+Central processing of events and raising alerts/alarms/errors
+Extend existing functionality Interesting Events that need to be produced/captured: 1. Up/down events for services, 1. Threshold on number of occurrences 1. Dashboards - Thresholds - CPU utilization, Disk space, configurable 1. Error events in services 1. Infrastructure events (Up/Down). 1. Connectivity events (Connect/Disconnect) 1. General service events (started, halted, etc) 1. Mojaloop errors based on the specification Business: 1. Thresholds 1. Limits (NDC) 1. Position events 1. Settlement events (settling, window closure, etc) Things to take care of: 1. Mode of notifications 1. Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops 1. Duration of persistence of logs, etc (especially commercial/business data) - comply with guidelines/ standards. 1. HA events and assess reliability - How do we measure the uptime of the system and availability
+Todo
+
+
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Event Logging Framework
+Recommended usage of the alerting system
+
+Todo
+
+
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Event Logging Framework
+Design event logging Framework
+Framework for producing & capturing Event logs that can be used for monitoring Interesting Events that need to be produced/captured: - Up/down events for services, - Threshold on number of occurrences - Dashboards - Thresholds - CPU utilization, Disk space, configurable - Error events in services - Infrastructure events (Up/Down). - Connectivity events (Connect/Disconnect) - General service events (started, halted, etc) - Mojaloop errors based on the specification Business: - Thresholds - Limits (NDC) - Position events - Settlement events (settling, window closure, etc) Things to take care of: - Mode of notifications - Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops - Duration of persistence of logs, etc (especially commercial/business data) - comply with guidelines/ standards. - HA events and assess reliability - How do we measure the uptime of the system and availability
+Todo
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Event Logging Framework
+Implement Common Library for events
+
+Ready
+15.00
+PI-6
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Event Logging Framework
+Implementation for producing & capturing Event logs that can be used for monitoring
+Framework for producing & capturing Event logs that can be used for monitoring Interesting Events that need to be produced/captured: 1. Up/down events for services, 1. Threshold on number of occurrences 1. Dashboards - Thresholds - CPU utilization, Disk space, configurable 1. Error events in services 1. Infrastructure events (Up/Down). 1. Connectivity events (Connect/Disconnect) 1. General service events (started, halted, etc) 1. Mojaloop errors based on the specification Business: 1. Thresholds 1. Limits (NDC) 1. Position events 1. Settlement events (settling, window closure, etc) Things to take care of: 1. Mode of notifications 1. Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops 1. Duration of persistence of logs, etc (especially commercial/business data) - comply with guidelines/ standards. 1. HA events and assess reliability - How do we measure the uptime of the system and availability
+Ready
+8.00
+PI-6
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Event Logging Framework
+Testing the common library, framework for producing, capturing events
+
+Todo
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Dashboards for Monitoring
+Logging standards, implement & standardize
+
+Ready
+
+PI-5
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Dashboards for Monitoring
+Changes to logging to enhance traceability
+
+Ready
+
+PI-5
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Dashboards for Monitoring
+Design and identify dashboards needed for monitoring
+
+Todo
+
+PI-5
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Dashboards for Monitoring
+Operational Dashboards for monitoring specific events end-to-end
+
+Todo
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Dashboards for Monitoring
+Operational Dashboards for monitoring alerts/alarms/errors
+
+Todo
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Event Logging
+Dashboards for Monitoring
+Testing various dashboards
+
+Todo
+
+PI-6
+Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator
+
+
+NFR: Error Handling
+Implementing error endpoints
+Design solution for supporting error endpoints for transfers
+
+Todo
+
+PI-5
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+NFR: Error Handling
+Implementing error endpoints
+Implement support for error endpoints for transfers
+
+Todo
+
+PI-5
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+NFR: Error Handling
+Implementing error endpoints
+Updating simulators to support error endpoints
+
+Todo
+
+PI-5
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+NFR: Error Handling
+Implementing error endpoints
+Support for endpoints for other resources
+
+Todo
+
+PI-5
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+NFR: Error Handling
+Implementing error endpoints
+Enhance notification mechanism to handle notification issues, perform retries
+Retries according to configuration that can be set
+Todo
+
+PI-6
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+NFR: Error Handling
+Error Handling Framework
+Publish an event to be consumed by the event framework
+
+Ready
+
+
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+NFR: Error Handling
+Error Handling Framework
+Design an error handling framework for a standardized way of returning results of execution
+
+Todo
+
+PI-5
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+NFR: Error Handling
+Error Handling Framework
+Design error mapping for the error handling framework
+
+Todo
+
+PI-6
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+NFR: Error Handling
+Error Handling Framework
+Common library for error framework
+
+Ready
+
+PI-6
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+NFR: Error Handling
+Error Handling Framework
+Implement the error handling framework
+
+Ready
+
+PI-6
+Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care
+
+
+FR: Bulk Payments
+Bulk Payments Design
+Design for Bulk Payments: version - 1, based on the ML Spec
+
+Ready
+
+PI-5
+DFSP Switch DFSP System Integrators Identity Oracles
+
+
+FR: Bulk Payments
+Bulk Payments Design
+Design for Bulk Payments: version - 2
+
+Ready
+
+PI-5
+DFSP Switch DFSP System Integrators Identity Oracles
+
+
+FR: Bulk Payments
+Bulk Payments Design
+Finalize design for Bulk Payments
+
+Todo
+
+PI-6
+DFSP Switch DFSP System Integrators Identity Oracles
+
+
+FR: Bulk Payments
+Bulk Payments Implementation
+Implementing resources: bulkTransfers
+
+Todo
+
+
+DFSP Switch DFSP System Integrators Identity Oracles
+
+
+FR: Bulk Payments
+Bulk Payments Implementation
+Bulk payments error handling
+
+Todo
+
+
+DFSP Switch DFSP System Integrators Identity Oracles
+
+
+FR: Bulk Payments
+Bulk Payments Implementation
+Testing Bulk Payments
+
+Todo
+
+
+DFSP Switch DFSP System Integrators Identity Oracles
+
+
+FR: Bulk Payments
+Bulk Payments Implementation
+Implementing resources for bulk look-up, etc
+
+Todo
+
+PI-5
+DFSP Switch DFSP System Integrators Identity Oracles
+
+
+FR: Bulk Payments
+Bulk Payments Implementation
+Implementing resources: bulkQuotes
+
+Todo
+
+PI-6
+DFSP Switch DFSP System Integrators Identity Oracles
+
+
+FR: Bulk Payments
+Bulk Payments Implementation
+Implementing resources: bulkTransfers - PoC
+
+Ready
+
+PI-6
+DFSP Switch DFSP System Integrators Identity Oracles
+
+
+FR: Forensic Logging
+Forensic Logging
+Migrate central-kms from scala to node and associated DB to the selected type
+
+Ready
+
+
+DFSP Hub Security, Risk and Compliance Team Hub Tech Ops
+
+
+FR: Forensic Logging
+Forensic Logging
+Revisit/review Forensic Logging Architecture
+
+Ready
+
+PI-5
+DFSP Hub Security, Risk and Compliance Team Hub Tech Ops
+
+
+FR: Forensic Logging
+Forensic Logging
+Migrate from postgres to selected persistent store (mysql/kafka)
+
+Ready
+
+PI-5
+DFSP Hub Security, Risk and Compliance Team Hub Tech Ops
+
+
+FR: Forensic Logging
+Forensic Logging
+Sidecars to periodically validate the connected services
+
+Todo
+
+PI-6
+DFSP Hub Security, Risk and Compliance Team Hub Tech Ops
+
+
+FR: Forensic Logging
+Forensic Logging
+Ensure algorithm and encryption functionality work as expected
+
+Ready
+
+PI-6
+DFSP Hub Security, Risk and Compliance Team Hub Tech Ops
+
+
+FR: Forensic Logging
+Auditing
+Define/gather auditing requirements
+
+Todo
+
+PI-5
+DFSP Hub Security, Risk and Compliance Team Hub Tech Ops
+
+
+FR: Forensic Logging
+Auditing
+Implement auditing events or logging capabilities in components
+
+Todo
+
+PI-6
+DFSP Hub Security, Risk and Compliance Team Hub Tech Ops
+
+
+FR: Forensic Logging
+Auditing
+Use for auditing (test by generating reports)
+
+Ready
+
+PI-6
+DFSP Hub Security, Risk and Compliance Team Hub Tech Ops
+
+
+FR: Forensic Logging
+Auditing
+Integration with Event Handling / ELK ?
+
+Ready
+
+PI-6
+DFSP Hub Security, Risk and Compliance Team Hub Tech Ops
+
+
+FR: Central Directory (account lookup)
+central directory alignment to ML Spec with existing capabilities
+Design solution for integration with current services
+
+Ready
+
+PI-5
+DFSP DFSP System Integrators Switch Identity Oracles
+
+
+FR: Central Directory (account lookup)
+central directory alignment to ML Spec with existing capabilities
+Migrate code from Mowali and replace the existing legacy code
+
+Ready
+
+PI-5
+DFSP DFSP System Integrators Switch Identity Oracles
+
+
+FR: Central Directory (account lookup)
+central directory alignment to ML Spec with existing capabilities
+QA, testing for lookup, integration with overall use cases
+
+Todo
+
+PI-5
+DFSP DFSP System Integrators Switch Identity Oracles
+
+
+FR: Central Directory (account lookup)
+Extend Central directory capabilities to support Merchant registries, multiple identifiers
+Support for multiple identifiers?
+
+Todo
+
+
+DFSP DFSP System Integrators Switch Identity Oracles
+
+
+FR: Central Directory (account lookup)
+Extend Central directory capabilities to support Merchant registries, multiple identifiers
+Design solution for Merchant registries
+- As an FSP, I want to know the FSP that a Merchant belongs to - As an FSP, I want to register a new Merchant and assign a unique TILL number - As a Merchant, I want to be able to request a DFSP to assign me a Merchant number (design) - As a Switch, I should maintain a record of mapping between FSPs and Merchant IDs
+Todo
+
+PI-6
+DFSP DFSP System Integrators Switch Identity Oracles
+
+
+FR: Central Directory (account lookup)
+Extend Central directory capabilities to support Merchant registries, multiple identifiers
+Implementing solution for Merchant payments
+
+Todo
+
+PI-6
+DFSP DFSP System Integrators Switch Identity Oracles
+
+
+FR: Central Directory (account lookup)
+Extend Central directory capabilities to support Merchant registries, multiple identifiers
+QA, testing for lookup, integration with overall merchant use cases
+
+Todo
+
+PI-6
+DFSP DFSP System Integrators Switch Identity Oracles
+
+
+FR: Merchant "Request to Pay"
+Supporting 'Merchant request to pay'
+Design solution and identify pre-requisites for Merchant payments
+
+Todo
+
+PI-5
+DFSP Switch DFSP System Integrators
+
+
+FR: Merchant "Request to Pay"
+Supporting 'Merchant request to pay'
+Implement Resources: transactionRequests, authorizations
+
+Ready
+
+PI-5
+DFSP Switch DFSP System Integrators
+
+
+FR: Merchant "Request to Pay"
+Supporting 'Merchant request to pay'
+Implement error endpoints and related functionality
+
+Todo
+
+PI-5
+DFSP Switch DFSP System Integrators
+
+
+FR: Merchant "Request to Pay"
+Supporting 'Merchant request to pay'
+'Merchant request to pay' is supported, released
+
+Todo
+
+PI-5
+DFSP Switch DFSP System Integrators
+
+
+FR: Merchant "Request to Pay"
+Supporting 'Merchant request to pay'
+QA, testing on the feature
+
+Todo
+
+PI-6
+DFSP Switch DFSP System Integrators
+
+
+NFR (new): Community Support
+Supporting community regarding deployment, Mojaloop Specification
+Update documentation to support community
+
+Todo
+
+PI-5
+BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators
+
+
+NFR (new): Community Support
+Supporting community regarding deployment, Mojaloop Specification
+Provide support to community requests on deployment
+
+Todo
+
+PI-5
+BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators
+
+
+NFR (new): Community Support
+Supporting community regarding deployment, Mojaloop Specification
+Provide support to community requests regarding the Spec
+
+Todo
+
+PI-5
+BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators
+
+
+NFR (new): Community Support
+Supporting community regarding deployment, Mojaloop Specification
+Provide an FAQ/Wiki section for deployment and Spec questions
+
+Todo
+
+PI-6
+BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators
+
+
+Others (not covered) / Hardening (Cleanup, Refactoring, etc)
+Formalizing the Operations/Admin API
+Formalize the Admin/operations API
+
+Ready
+
+PI-5
+
+
+
+Others (not covered) / Hardening (Cleanup, Refactoring, etc)
+Formalizing the Operations/Admin API
+Provide features to manage FSPs
+
+Ready
+
+PI-6
+
+
+
+Others (not covered) / Hardening (Cleanup, Refactoring, etc)
+Formalizing the Operations/Admin API
+central hub with UI ?
+
+Ready
+
+PI-6
+
+
+
+Others (not covered) / Hardening (Cleanup, Refactoring, etc)
+FRMS
+Investigate capabilities & features needed
+
+Ready
+
+PI-6
+
+
+
+Others (not covered) / Hardening (Cleanup, Refactoring, etc)
+FRMS
+Prioritizing Rules/Policies to implement
+
+Ready
+
+PI-6
+
+
+
+Others (not covered) / Hardening (Cleanup, Refactoring, etc)
+Refactoring: API Led Design, Implementation for central services
+Designing all central services to support API Led Design
+
+Ready
+
+PI-5
+
+
+
+Others (not covered) / Hardening (Cleanup, Refactoring, etc)
+Refactoring: API Led Design, Implementation for central services
+Refactoring for ml-api-adapter
+
+Ready
+
+PI-6
+
+
+
+Others (not covered) / Hardening (Cleanup, Refactoring, etc)
+Refactoring: API Led Design, Implementation for central services
+Refactoring for central services
+
+Ready
+
+PI-6
+
+
+
+Security
+
+
+
+
+
+
+Hub Security, Risk and Compliance Team DFSP Switch
+
+
+Cross currency
+Account Lookup Service
+Change in Currency
+ALS naming convention for routing - if moving from MSISDN only Identify currency and impact to Standard Transfers
+Todo
+
+PI-5
+DFSP Identity Oracles Hub Finance Team
+
+
+Cross currency
+Quotation
+Regulatory Data
+KYC Data Need to clarify - including understanding Multi Currency What data needs to be passed - via DFSPs and through CCP How is that data passed and validated? Impact on timeouts Rules and Design
+Todo
+
+PI-5
+DFSP Identity Oracles Hub Finance Team
+
+
+Cross currency
+Quotation
+FX Rate Management
+
+Todo
+
+PI-5
+DFSP Identity Oracles Hub Finance Team
+
+
+Cross currency
+Quotation
+Fees consolidation
+How are fees passed along the chain? Not already in the quote Is there a need for transparency? If not how and where are all the fees calculated and brought to common currency?
+Todo
+
+PI-5
+DFSP Identity Oracles Hub Finance Team
+
+
+Cross currency
+Transfer
+Limit Management
+Velocity Rules for sender and receiver Regulatory data required to confirm
+Todo
+
+PI-5
+DFSP Identity Oracles Hub Finance Team
+
+
+Cross currency
+Transfer
+Sequencing of Position management and fund movement
+As now 4 (+) positions affected control financial risk
+Todo
+
+PI-5
+DFSP Identity Oracles Hub Finance Team
+
+
+Cross currency
+Transfer
+Rollback
+How does it work - design
+Todo
+
+PI-5
+DFSP Identity Oracles Hub Finance Team
+
+
+Cross currency
+Transfer
+Timeout
+
+Todo
+
+PI-5
+DFSP Identity Oracles Hub Finance Team
+
+
+Cross currency
+Settlement
+Reporting of Transfer
+Managing the trail of the hops for the CCP and regulatory for Send and Receive
+Todo
+
+PI-5
+DFSP Identity Oracles Hub Finance Team
+
+
+Documentation
+
+
+
+
+
+
+BMGF DFSP Useful Resources
+
+
+FRMS
+
+
+
+
+
+
+Hub Security, Risk and Compliance Team DFSP
+
+
+Lab for FSPs, deployment tools
+
+
+
+
+
+
+BMGF
+
+
+Cross-network payments
+
+
+
+
+
+
+
+
+
+Payment Hub
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Beyond Phase 3
+Below is a list of larger initiatives and epics by area that will help to further develop the Mojaloop project. Some of these have been entered as epics or stories, but most are still in the "concept" phase.
+Functional Epics
+
+Native Implementation P2P: Implementation of resources to support Payee initiated and other Use Cases from the Specification, along with supporting P2P Use case completely
+Native Implementation Payee: Implementation of resources to support Payee initiated transactions and ones that involve OTPs
+Bulk Payments: Design & Implementation of resources to support Bulk Payments
+
+Central Services
+
+Directory Interoperability
+Multi-currency and schemes
+Enforcing Currency configurations
+Fees: UI for configuring fees
+Increase performance
+Fraud Scores and Reasons
+Role management
+DSP Management
+Stopping/Pausing a DFSP
+boarding protocol
+
+DFSP/Account Management
+
+Agent Network
+NFCC identity merchant
+Persistent merchant ID
+Onboarding protocol
+Change password
+Password requirements
+Hold/Restart account
+
+Security
+
+Central certificate service
+Implement fee quote transfer service in the center
+Prevent user guessing from rogue DFSPs
+Preferred authorizations
+
+Market Deployment
+
+Integration with major mobile money vendors in Africa (PDP initiative)
+
+CI/CD & Testing
+
+Implement auto deployment to test environment
+Automatically run acceptance tests in test environment as part of build/deploy
+Automate bulk import tests
+Forensic log test
+Account management test
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Mojaloop Roadmap","level":"1.7","depth":1,"next":{"title":"Changelog","level":"1.8","depth":1,"path":"changelog.md","ref":"changelog.md","articles":[]},"previous":{"title":"Project","level":"1.6.2","depth":2,"path":"repositories/project.md","ref":"repositories/project.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-roadmap.md","mtime":"2019-03-05T16:37:38.692Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":".","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+The Account Lookup Service (refer to section 6.2.1.2) as per the Mojaloop v1.0 Specification implements the following use-cases:
+
+Participant Look-up
+Party Look-up
+Manage Participants Registry information
+Adding Participant Registry information
+Deleting Participant Registry information
+
+
+Admin Operations
+Manage Oracle End-point Routing information
+
+
+
+1. Design Considerations
+1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
+The routing configuration will be based on the following:
+
+PartyIdType - See section 7.5.6 of the Mojaloop Specification
+PartyIdentifier - See section 7.3.24 of the Mojaloop Specification
+Currency - See section 7.5.5 of the Mojaloop Specification. Currency code defined in ISO 4217 as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
+
+1.2 ALS Oracle Service/Adapter
+The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the /participants Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+
+ALS Oracle Service v1 Interface Contract
+
+2. Participant Lookup Design
+2.1 Architecture overview
+
+2.2 Sequence diagram
+
+3. Party Lookup Design
+3.1 Architecture overview
+
+3.2 Sequence diagram
+Work in progress..
+4. Database Design
+4.1 ALS Database Schema
+Work in progress..
+4.2 Oracle Database Schema
+This is optional & is dependant on the Oracle's requirements & design.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Account-Lookup Service","level":"1.4.3","depth":2,"next":{"title":"Central-Settlements Service","level":"1.4.4","depth":2,"path":"mojaloop-technical-overview/central-settlements-service.md","ref":"mojaloop-technical-overview/central-settlements-service.md","articles":[]},"previous":{"title":"Central-Ledger Services","level":"1.4.2","depth":2,"path":"mojaloop-technical-overview/central-ledger.md","ref":"mojaloop-technical-overview/central-ledger.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-technical-overview/account-lookup-service.md","mtime":"2019-03-11T17:35:01.160Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+The central ledger is a series of services that facilitate clearing and settlement of transfers between DFSPs, including the following functions:
+
+Brokering real-time messaging for funds clearing
+Maintaining net positions for a deferred net settlement
+Propagating scheme-level and off-transfer fees
+
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Central-Ledger Services","level":"1.4.2","depth":2,"next":{"title":"Account-Lookup Service","level":"1.4.3","depth":2,"path":"mojaloop-technical-overview/account-lookup-service.md","ref":"mojaloop-technical-overview/account-lookup-service.md","articles":[]},"previous":{"title":"Mojaloop Hub","level":"1.4.1","depth":2,"path":"mojaloop-technical-overview/mojaloop-components.md","ref":"mojaloop-technical-overview/mojaloop-components.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-technical-overview/central-ledger.md","mtime":"2019-03-08T16:40:38.995Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+The Central Settlements service is part of the Mojaloop project and deployment.
+
+The central settlements service exposes Settlement API to manage the settlements between FSPs and the Central Hub.
+The service manages Settlement Windows and Settlements Event Triggers and provides information about FSPs accounts and settlements.
+
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Central-Settlements Service","level":"1.4.4","depth":2,"next":{"title":"Fraud Services","level":"1.4.5","depth":2,"path":"mojaloop-technical-overview/fraud-services.md","ref":"mojaloop-technical-overview/fraud-services.md","articles":[]},"previous":{"title":"Account-Lookup Service","level":"1.4.3","depth":2,"path":"mojaloop-technical-overview/account-lookup-service.md","ref":"mojaloop-technical-overview/account-lookup-service.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-technical-overview/central-settlements-service.md","mtime":"2019-03-08T16:40:38.995Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+Work in progress...
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Fraud Services","level":"1.4.5","depth":2,"next":{"title":"APIs","level":"1.5","depth":1,"path":"api/README.md","ref":"api/README.md","articles":[{"title":"Mojaloop","level":"1.5.1","depth":2,"path":"api/mojaloop-api-specification.md","ref":"api/mojaloop-api-specification.md","articles":[]},{"title":"ALS Oracle","level":"1.5.2","depth":2,"path":"api/als-oracle-api-specification.md","ref":"api/als-oracle-api-specification.md","articles":[]}]},"previous":{"title":"Central-Settlements Service","level":"1.4.4","depth":2,"path":"mojaloop-technical-overview/central-settlements-service.md","ref":"mojaloop-technical-overview/central-settlements-service.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-technical-overview/fraud-services.md","mtime":"2019-03-08T16:40:38.996Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+Mojaloop Services
+The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers (DFSPs) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. The following diagrams shows the Mojaloop interconnects between DFSPs and the Mojaloop Hub (schema implementation example) for a Peer-to-Peer (P2P) Transfer:
+Mojaloop addresses these issues in several key ways:
+
+A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
+A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
+Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
+
+
+The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
+
+Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+Mojaloop Hub - Overall Mojaloop reference (and customizable) implementation for Hub Operators is based on the above OSS solution.
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Mojaloop Technical Overview","level":"1.4","depth":1,"next":{"title":"Mojaloop Hub","level":"1.4.1","depth":2,"path":"mojaloop-technical-overview/mojaloop-components.md","ref":"mojaloop-technical-overview/mojaloop-components.md","articles":[]},"previous":{"title":"Level One Principles","level":"1.3.2","depth":2,"path":"mojaloop-background/level-one-principles.md","ref":"mojaloop-background/level-one-principles.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-technical-overview/README.md","mtime":"2019-03-08T16:40:38.998Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+There are several components that make up the Mojaloop ecosystem. The Mojaloop Hub is the primary container and reference we use to describe the core Mojaloop components.
+The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
+
+Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. Central-Services utilise MySQL as a Data-store, and leverage on Kafka for Messaging
+These consist of:
+
+The Mojaloop API Adapters provide the standard set of interfaces a DFSP can implement to connect to the system for Transfers. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
+The Central Services provide the set of components required to move money from one DFSP to another through the Mojaloop API Adapters. This is similar to how money moves through a central bank or clearing house in developed countries. The Central Services contains the core Central Ledger logic to move money but also will be extended to provide fraud management and enforce scheme rules.
+The Account Lookup Service (ALS) provides mechanism to resolve FSP routing information through the Particpant API or orchestrate a Party request based on an internal Participant look-up. The internal Participant look-up is handled by a number of standard Oracle adapter or services. Example Oracle adapter/service would be to look-up Participant information from Pathfinder or a Merchant Registry. These Oracle adapter or services can easily be added depending on the schema requirements.
+
+On either side of the Mojaloop Hub there is sample open source code to show how a DFSP can send and receive payments and the client that an existing DFSP could host to connect to the network.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Mojaloop Hub","level":"1.4.1","depth":2,"next":{"title":"Central-Ledger Services","level":"1.4.2","depth":2,"path":"mojaloop-technical-overview/central-ledger.md","ref":"mojaloop-technical-overview/central-ledger.md","articles":[]},"previous":{"title":"Mojaloop Technical Overview","level":"1.4","depth":1,"path":"mojaloop-technical-overview/README.md","ref":"mojaloop-technical-overview/README.md","articles":[{"title":"Mojaloop Hub","level":"1.4.1","depth":2,"path":"mojaloop-technical-overview/mojaloop-components.md","ref":"mojaloop-technical-overview/mojaloop-components.md","articles":[]},{"title":"Central-Ledger Services","level":"1.4.2","depth":2,"path":"mojaloop-technical-overview/central-ledger.md","ref":"mojaloop-technical-overview/central-ledger.md","articles":[]},{"title":"Account-Lookup Service","level":"1.4.3","depth":2,"path":"mojaloop-technical-overview/account-lookup-service.md","ref":"mojaloop-technical-overview/account-lookup-service.md","articles":[]},{"title":"Central-Settlements Service","level":"1.4.4","depth":2,"path":"mojaloop-technical-overview/central-settlements-service.md","ref":"mojaloop-technical-overview/central-settlements-service.md","articles":[]},{"title":"Fraud Services","level":"1.4.5","depth":2,"path":"mojaloop-technical-overview/fraud-services.md","ref":"mojaloop-technical-overview/fraud-services.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"mojaloop-technical-overview/mojaloop-components.md","mtime":"2019-03-08T16:40:38.998Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+ "name": "documentation",
+ "version": "5.6.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
+ },
+ "@types/node": {
+ "version": "11.10.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-11.10.5.tgz",
+ "integrity": "sha1-+6yjQIa9wRgBHh8FxHaI1DLy1XE=",
+ "optional": true
+ },
+ "abab": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
+ "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "optional": true
+ },
+ "accepts": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "requires": {
+ "mime-types": "~2.1.18",
+ "negotiator": "0.6.1"
+ }
+ },
+ "acorn": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
+ "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=",
+ "optional": true
+ },
+ "acorn-globals": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
+ "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=",
+ "optional": true,
+ "requires": {
+ "acorn": "^2.1.0"
+ }
+ },
+ "ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+ "requires": {
+ "co": "^4.6.0",
+ "json-stable-stringify": "^1.0.1"
+ }
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "requires": {
+ "kind-of": "^3.0.2",
+ "longest": "^1.0.1",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+ },
+ "anymatch": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+ "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=",
+ "requires": {
+ "micromatch": "^2.1.5",
+ "normalize-path": "^2.0.0"
+ }
+ },
+ "apache-crypt": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.1.tgz",
+ "integrity": "sha1-1vxyqm0n2ZyVqU/RiNcx7v/6Zjw=",
+ "requires": {
+ "unix-crypt-td-js": "^1.0.0"
+ }
+ },
+ "apache-md5": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.2.tgz",
+ "integrity": "sha1-7klza2ObTxCLbp5ibG2pkwa0FpI="
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "requires": {
+ "arr-flatten": "^1.0.1"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE="
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+ "optional": true
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k="
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+ }
+ }
+ },
+ "bash-color": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/bash-color/-/bash-color-0.0.4.tgz",
+ "integrity": "sha1-6b6M4zVAytpIgXaMWb1jhlc26RM="
+ },
+ "basic-auth": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
+ "integrity": "sha1-uZgnm/R844NEtPPPkW1Gebv1Hjo=",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "bcryptjs": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
+ "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
+ },
+ "binary-extensions": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz",
+ "integrity": "sha1-lSPgATBqMkRLkHQj8d4hZCIvarE="
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "requires": {
+ "hoek": "2.x.x"
+ }
+ },
+ "bootprint": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bootprint/-/bootprint-1.0.2.tgz",
+ "integrity": "sha1-dEU4so0kTJY0RqIuiAW7kbED9XM=",
+ "requires": {
+ "commander": "^2.6.0",
+ "customize-engine-handlebars": "^1.0.0",
+ "customize-engine-less": "^1.0.1",
+ "customize-engine-uglify": "^1.0.0",
+ "customize-watch": "^1.0.0",
+ "customize-write-files": "^1.0.0",
+ "debug": "^2.1.2",
+ "get-promise": "^1.3.1",
+ "js-yaml": "^3.8.2",
+ "live-server": "^1.2.0",
+ "q": "^1.4.1",
+ "trace-and-clarify-if-possible": "^1.0.3"
+ }
+ },
+ "bootprint-base": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/bootprint-base/-/bootprint-base-1.1.0.tgz",
+ "integrity": "sha1-svYgtki/pvxuAnGzhxz8nPeM0DA=",
+ "requires": {
+ "bootstrap": "^3.3.2",
+ "cheerio": "^0.19.0",
+ "handlebars": "^3.0.0",
+ "highlight.js": "^8.4.0",
+ "jquery": "^2",
+ "json-stable-stringify": "^1.0.0",
+ "marked": "^0.3.3"
+ }
+ },
+ "bootprint-json-schema": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/bootprint-json-schema/-/bootprint-json-schema-1.1.0.tgz",
+ "integrity": "sha1-UI6PoRINyW0Lwsa6g0HrzdVFhSg=",
+ "requires": {
+ "bootprint-base": "^1.0.0",
+ "lodash": "^4.17.2"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40="
+ }
+ }
+ },
+ "bootprint-swagger": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bootprint-swagger/-/bootprint-swagger-1.0.1.tgz",
+ "integrity": "sha1-ykYPsXnZDXVymWwBaFJXroDNHDM=",
+ "requires": {
+ "bootprint-json-schema": "^1.0.0",
+ "highlight.js": "^8.9.1",
+ "json-stable-stringify": "^1.0.1",
+ "lodash": "^3.9.3",
+ "m-io": "^0.3.1"
+ }
+ },
+ "bootstrap": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz",
+ "integrity": "sha1-w6NH1Bniia0R9AM+PEEyuHwIHXI="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "requires": {
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms="
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "requires": {
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
+ }
+ },
+ "cheerio": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz",
+ "integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU=",
+ "requires": {
+ "css-select": "~1.0.0",
+ "dom-serializer": "~0.1.0",
+ "entities": "~1.1.1",
+ "htmlparser2": "~3.8.1",
+ "lodash": "^3.2.0"
+ }
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "requires": {
+ "anymatch": "^1.3.0",
+ "async-each": "^1.0.0",
+ "fsevents": "^1.0.0",
+ "glob-parent": "^2.0.0",
+ "inherits": "^2.0.1",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^2.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.0.0"
+ }
+ },
+ "clarify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/clarify/-/clarify-2.1.0.tgz",
+ "integrity": "sha1-jdSFOeIC5OAJ0sf6f+G2nN8mJSc=",
+ "optional": true,
+ "requires": {
+ "stack-chain": "^2.0.0"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
+ }
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "colors": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
+ "integrity": "sha1-OeAF1Uav4B4B+cTKj6UPaGoBIF0="
+ },
+ "combined-stream": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
+ "integrity": "sha1-LR0kMXr7ir6V1tLAsHtXgTU52Cg=",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So="
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "connect": {
+ "version": "3.6.6",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
+ "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
+ "requires": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.0",
+ "parseurl": "~1.3.2",
+ "utils-merge": "1.0.1"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha1-6sEdpRWS3Ya58G9uesKTs9+HXSk=",
+ "requires": {
+ "object-assign": "^4",
+ "vary": "^1"
+ }
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "requires": {
+ "boom": "2.x.x"
+ }
+ },
+ "crypto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
+ "integrity": "sha1-KvG3ytgXXSTIobB3glV5SiGAMDc="
+ },
+ "css-select": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz",
+ "integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA=",
+ "requires": {
+ "boolbase": "~1.0.0",
+ "css-what": "1.0",
+ "domutils": "1.4",
+ "nth-check": "~1.0.0"
+ }
+ },
+ "css-what": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz",
+ "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w="
+ },
+ "cssom": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz",
+ "integrity": "sha1-+FIGzuBO+oQfPFmCp0uparINZa0=",
+ "optional": true
+ },
+ "cssstyle": {
+ "version": "0.2.37",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
+ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
+ "optional": true,
+ "requires": {
+ "cssom": "0.3.x"
+ }
+ },
+ "customize": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/customize/-/customize-1.1.0.tgz",
+ "integrity": "sha1-jn3hMVqxV336ISTqmQbs6oijyS0=",
+ "requires": {
+ "debug": "^2.2.0",
+ "deep-aplus": "^1.0.4",
+ "jsonschema": "^1.0.2",
+ "jsonschema-extra": "^1.2.0",
+ "lodash": "^3.9.3",
+ "m-io": "^0.3.1",
+ "minimatch": "^3.0.0",
+ "q": "^1.4.1"
+ }
+ },
+ "customize-engine-handlebars": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/customize-engine-handlebars/-/customize-engine-handlebars-1.0.1.tgz",
+ "integrity": "sha1-SAElQInR6IRi4/1vIXMpk6p7+ZY=",
+ "requires": {
+ "debug": "^2.2.0",
+ "handlebars": "^3.0.3",
+ "lodash": "^3.9.3",
+ "m-io": "^0.3.1",
+ "promised-handlebars": "^1.0.0",
+ "q": "^1.4.1",
+ "q-deep": "^1.0.1"
+ }
+ },
+ "customize-engine-less": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/customize-engine-less/-/customize-engine-less-1.0.1.tgz",
+ "integrity": "sha1-rl//DPOSgGx9Dx1NqPfUsuZRCSk=",
+ "requires": {
+ "less": "^2.7.1",
+ "lodash": "^3.10.1",
+ "q": "^1.4.1"
+ }
+ },
+ "customize-engine-uglify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/customize-engine-uglify/-/customize-engine-uglify-1.0.0.tgz",
+ "integrity": "sha1-Eb3Mqslhn4zHCZHHGtB2K0cB+ug=",
+ "requires": {
+ "lodash": "^3.10.1",
+ "q": "^1.4.1",
+ "uglify-js": "^2.7.5"
+ }
+ },
+ "customize-watch": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/customize-watch/-/customize-watch-1.0.0.tgz",
+ "integrity": "sha1-D6nLpHG+/6Kb+U5lVN8FwN7A9YA=",
+ "requires": {
+ "chokidar": "^1.2.0",
+ "customize": "^1.0.0",
+ "debug": "^2.2.0",
+ "deep-aplus": "^1.0.4",
+ "lodash": "^3.10.1",
+ "m-io": "^0.3.1",
+ "q": "^1.4.1"
+ }
+ },
+ "customize-write-files": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/customize-write-files/-/customize-write-files-1.1.0.tgz",
+ "integrity": "sha1-zCd89CCNT6OXJgUeQ8Z7G3QQU54=",
+ "requires": {
+ "debug": "^2.2.0",
+ "deep-aplus": "^1.0.4",
+ "m-io": "^0.3.1",
+ "q": "^1.4.1",
+ "stream-equal": "^0.1.12"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ },
+ "deep-aplus": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/deep-aplus/-/deep-aplus-1.0.4.tgz",
+ "integrity": "sha1-4exMEKALUEa1ng3dBRnRAa4xXo8=",
+ "requires": {
+ "lodash.isplainobject": "^4.0.6"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "optional": true
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "dom-serializer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
+ "integrity": "sha1-HsQFnihLq+027sKUHUqXChic58A=",
+ "requires": {
+ "domelementtype": "^1.3.0",
+ "entities": "^1.1.1"
+ }
+ },
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8="
+ },
+ "domhandler": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
+ "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "domutils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz",
+ "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=",
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E="
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+ },
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY="
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
+ "optional": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "es6-promise": {
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
+ "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q=="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "escodegen": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz",
+ "integrity": "sha1-xIX/jWtM24nif0qFbpHxGEAcpRA=",
+ "optional": true,
+ "requires": {
+ "esprima": "^3.1.3",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+ "optional": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "optional": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE="
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "optional": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "optional": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+ },
+ "event-stream": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
+ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+ "requires": {
+ "duplexer": "~0.1.1",
+ "from": "~0",
+ "map-stream": "~0.1.0",
+ "pause-stream": "0.0.11",
+ "split": "0.3",
+ "stream-combiner": "~0.0.4",
+ "through": "~2.3.1"
+ }
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "requires": {
+ "is-posix-bracket": "^0.1.0"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "requires": {
+ "fill-range": "^2.1.0"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo="
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "extract-zip": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
+ "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
+ "requires": {
+ "concat-stream": "1.6.2",
+ "debug": "2.6.9",
+ "mkdirp": "0.5.1",
+ "yauzl": "2.4.1"
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "fast-glob": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz",
+ "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==",
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.1.2",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.3",
+ "micromatch": "^3.1.10"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ }
+ }
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "optional": true
+ },
+ "faye-websocket": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
+ "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
+ "requires": {
+ "websocket-driver": ">=0.5.1"
+ }
+ },
+ "fd-slicer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "requires": {
+ "pend": "~1.2.0"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
+ },
+ "fill-range": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+ "integrity": "sha1-6x53OrsFbc2N8r/favWbizqTZWU=",
+ "requires": {
+ "is-number": "^2.1.0",
+ "isobject": "^2.0.0",
+ "randomatic": "^3.0.0",
+ "repeat-element": "^1.1.2",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
+ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.1",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "statuses": "~1.3.1",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.5",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+ },
+ "from": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
+ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4="
+ },
+ "fs-extra": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz",
+ "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^3.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "fsevents": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz",
+ "integrity": "sha1-SFG2ZKN4PlIAOzxm6w7uEHSTOqQ=",
+ "optional": true,
+ "requires": {
+ "nan": "^2.9.2",
+ "node-pre-gyp": "^0.10.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
+ "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "optional": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
+ "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
+ "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
+ "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz",
+ "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "optional": true
+ },
+ "needle": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz",
+ "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==",
+ "optional": true,
+ "requires": {
+ "debug": "^2.1.2",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz",
+ "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==",
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
+ "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz",
+ "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==",
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz",
+ "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==",
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "optional": true
+ },
+ "semver": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "optional": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
+ "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
+ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+ "optional": true
+ }
+ }
+ },
+ "get-promise": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-promise/-/get-promise-1.4.0.tgz",
+ "integrity": "sha1-RDBFyGUwvrvtIihh7+0TwNNv9qA=",
+ "requires": {
+ "lodash": "^3.8.0",
+ "q": "^1.2.0"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "gitbook-cli": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/gitbook-cli/-/gitbook-cli-2.3.2.tgz",
+ "integrity": "sha512-eyGtkY7jKHhmgpfuvgAP5fZcUob/FBz4Ld0aLRdEmiTrS1RklimN9epzPp75dd4MWpGhYvSbiwxnpyLiv1wh6A==",
+ "requires": {
+ "bash-color": "0.0.4",
+ "commander": "2.11.0",
+ "fs-extra": "3.0.1",
+ "lodash": "4.17.4",
+ "npm": "5.1.0",
+ "npmi": "1.0.1",
+ "optimist": "0.6.1",
+ "q": "1.5.0",
+ "semver": "5.3.0",
+ "tmp": "0.0.31",
+ "user-home": "2.0.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ=="
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
+ },
+ "q": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz",
+ "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE="
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
+ }
+ }
+ },
+ "gitbook-plugin-back-to-top-button": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-back-to-top-button/-/gitbook-plugin-back-to-top-button-0.1.4.tgz",
+ "integrity": "sha1-5iGDOLDvGdWOb2YAmUNQt26ANd8="
+ },
+ "gitbook-plugin-collapsible-chapters": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-collapsible-chapters/-/gitbook-plugin-collapsible-chapters-0.1.8.tgz",
+ "integrity": "sha1-dxVcYcrBlRch2L9Es/ImphoeZcU="
+ },
+ "gitbook-plugin-editlink": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-editlink/-/gitbook-plugin-editlink-1.0.2.tgz",
+ "integrity": "sha1-ej2Bk/guYfCUF83w52h2MfW2GV4="
+ },
+ "gitbook-plugin-include": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-include/-/gitbook-plugin-include-0.1.0.tgz",
+ "integrity": "sha1-w1/0dlYKXv/e+tv2OYIknBy8dNw=",
+ "requires": {
+ "q": "*"
+ }
+ },
+ "gitbook-plugin-insert-logo": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-insert-logo/-/gitbook-plugin-insert-logo-0.1.5.tgz",
+ "integrity": "sha1-2q6N2kGiNtVPE5MeVwsmcpVXiFo="
+ },
+ "gitbook-plugin-search": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-search/-/gitbook-plugin-search-2.2.1.tgz",
+ "integrity": "sha1-bSW1p3aZD6mP39+jfeMx944PaxM="
+ },
+ "gitbook-plugin-swagger": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-swagger/-/gitbook-plugin-swagger-0.2.0.tgz",
+ "integrity": "sha1-g33zIY/9q9/LVu2Xr9SVYinZ0h0=",
+ "requires": {
+ "bootprint": "^1.0.0",
+ "bootprint-swagger": "^1.0.1"
+ }
+ },
+ "gitbook-plugin-theme-api": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-theme-api/-/gitbook-plugin-theme-api-1.1.2.tgz",
+ "integrity": "sha1-jBRaS61JoSE8AlApC5vZtyrqiPw=",
+ "requires": {
+ "cheerio": "0.20.0",
+ "gitbook-plugin-search": ">=2.0.0",
+ "lodash": "4.12.0",
+ "q": "1.4.1",
+ "q-plus": "0.0.8"
+ },
+ "dependencies": {
+ "cheerio": {
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz",
+ "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=",
+ "requires": {
+ "css-select": "~1.2.0",
+ "dom-serializer": "~0.1.0",
+ "entities": "~1.1.1",
+ "htmlparser2": "~3.8.1",
+ "jsdom": "^7.0.2",
+ "lodash": "^4.1.0"
+ }
+ },
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "requires": {
+ "boolbase": "~1.0.0",
+ "css-what": "2.1",
+ "domutils": "1.5.1",
+ "nth-check": "~1.0.1"
+ }
+ },
+ "css-what": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
+ "integrity": "sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI="
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "lodash": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz",
+ "integrity": "sha1-K9bcRqBA9Z5obJcu0h2T3FkFMlg="
+ },
+ "q": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+ "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4="
+ }
+ }
+ },
+ "gitbook-plugin-uml": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-uml/-/gitbook-plugin-uml-1.0.1.tgz",
+ "integrity": "sha512-j9kWSFsfF7Y53LcfegQSkRUSc0cKcA93v0Sxg4wVzca7A9V1ridXiXcSeaKy7OZi386FB2mG+KihViUVZwfcCA==",
+ "requires": {
+ "crypto": "^1.0.1",
+ "fs-extra": "^4.0.1",
+ "node-plantuml": "^0.6.2",
+ "q": "^1.5.0"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity": "sha1-DYUhIuW8W+tFP7Ao6cDJvzY0DJQ=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ }
+ }
+ },
+ "gitbook-plugin-variables": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/gitbook-plugin-variables/-/gitbook-plugin-variables-1.1.0.tgz",
+ "integrity": "sha512-+G97YsciufqZQenG1TziLfKEAIpKwnxiipBOtWM0lZu8OxSR2WG4n/9zGPq3RqYAfzb1BxD6m6i0LmxmOF0vPA==",
+ "requires": {
+ "fast-glob": "^2.2.2",
+ "fs-extra": "^7.0.0",
+ "js-yaml": "^3.12.0",
+ "lodash": "^4.17.10",
+ "native-require": "^1.1.4"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
+ }
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "requires": {
+ "glob-parent": "^2.0.0",
+ "is-glob": "^2.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "requires": {
+ "is-glob": "^2.0.0"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs="
+ },
+ "graceful-fs": {
+ "version": "4.1.15",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
+ "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA="
+ },
+ "handlebars": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-3.0.6.tgz",
+ "integrity": "sha1-Yc8xbPmDlZcdOMZlI/pTC4o8ftI=",
+ "requires": {
+ "optimist": "^0.6.1",
+ "source-map": "^0.1.40",
+ "uglify-js": "^2.6"
+ }
+ },
+ "har-schema": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+ "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
+ },
+ "har-validator": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+ "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+ "requires": {
+ "ajv": "^4.9.1",
+ "har-schema": "^1.0.5"
+ }
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hasha": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
+ "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
+ "requires": {
+ "is-stream": "^1.0.1",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "requires": {
+ "boom": "2.x.x",
+ "cryptiles": "2.x.x",
+ "hoek": "2.x.x",
+ "sntp": "1.x.x"
+ }
+ },
+ "highlight.js": {
+ "version": "8.9.1",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-8.9.1.tgz",
+ "integrity": "sha1-uKnFSTISqTkvAiK2SclhFJfr+4g="
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
+ },
+ "htmlparser2": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
+ "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
+ "requires": {
+ "domelementtype": "1",
+ "domhandler": "2.3",
+ "domutils": "1.5",
+ "entities": "1.0",
+ "readable-stream": "1.1"
+ },
+ "dependencies": {
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "entities": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
+ "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "http-auth": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.1.3.tgz",
+ "integrity": "sha1-lFz63WZSHq+PfISRPTd9exXyTjE=",
+ "requires": {
+ "apache-crypt": "^1.1.2",
+ "apache-md5": "^1.0.6",
+ "bcryptjs": "^2.3.0",
+ "uuid": "^3.0.0"
+ }
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ },
+ "dependencies": {
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+ }
+ }
+ },
+ "http-parser-js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
+ "integrity": "sha1-1l7b7ehDSdDcMDIIFaFdOcw8u9g="
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "requires": {
+ "assert-plus": "^0.2.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+ "optional": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4="
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+ }
+ }
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "requires": {
+ "is-primitive": "^2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0="
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "jquery": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz",
+ "integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI="
+ },
+ "js-quantities": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/js-quantities/-/js-quantities-1.7.3.tgz",
+ "integrity": "sha1-6I/XvPXwp6JwEuMi+T30gd5Ewyo="
+ },
+ "js-yaml": {
+ "version": "3.12.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz",
+ "integrity": "sha1-7x0GfFqdnLZb1y8oW12BBcd/FPw=",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+ },
+ "jsdom": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz",
+ "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=",
+ "optional": true,
+ "requires": {
+ "abab": "^1.0.0",
+ "acorn": "^2.4.0",
+ "acorn-globals": "^1.0.4",
+ "cssom": ">= 0.3.0 < 0.4.0",
+ "cssstyle": ">= 0.2.29 < 0.3.0",
+ "escodegen": "^1.6.1",
+ "nwmatcher": ">= 1.3.7 < 2.0.0",
+ "parse5": "^1.5.1",
+ "request": "^2.55.0",
+ "sax": "^1.1.4",
+ "symbol-tree": ">= 3.1.0 < 4.0.0",
+ "tough-cookie": "^2.2.0",
+ "webidl-conversions": "^2.0.0",
+ "whatwg-url-compat": "~0.6.5",
+ "xml-name-validator": ">= 2.0.1 < 3.0.0"
+ }
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "requires": {
+ "jsonify": "~0.0.0"
+ }
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "jsonfile": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
+ "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
+ },
+ "jsonschema": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.4.tgz",
+ "integrity": "sha1-pGusXTUGolRGW8VIh24mfG0NZGQ="
+ },
+ "jsonschema-extra": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/jsonschema-extra/-/jsonschema-extra-1.2.0.tgz",
+ "integrity": "sha1-52eGotlQdb4ja5izuAUrD2wVTXs=",
+ "requires": {
+ "js-quantities": "^1.5.0",
+ "lodash.isplainobject": "^2.4.1"
+ },
+ "dependencies": {
+ "lodash.isplainobject": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-2.4.1.tgz",
+ "integrity": "sha1-rHOF4uqawDIfMNw7gDKm0iMagBE=",
+ "requires": {
+ "lodash._isnative": "~2.4.1",
+ "lodash._shimisplainobject": "~2.4.1"
+ }
+ }
+ }
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "kew": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
+ "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s="
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "requires": {
+ "graceful-fs": "^4.1.9"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
+ },
+ "less": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz",
+ "integrity": "sha1-zBJg9RyQCp7A2R+2mYE54CUHtjs=",
+ "requires": {
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "mime": "^1.2.11",
+ "mkdirp": "^0.5.0",
+ "promise": "^7.1.1",
+ "request": "2.81.0",
+ "source-map": "^0.5.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "optional": true
+ }
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "optional": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "live-server": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/live-server/-/live-server-1.2.1.tgz",
+ "integrity": "sha1-ZwYw3UCdIv6cUTqxwYlGhsdXFT4=",
+ "requires": {
+ "chokidar": "^2.0.4",
+ "colors": "^1.3.3",
+ "connect": "^3.6.6",
+ "cors": "^2.8.5",
+ "event-stream": "3.3.4",
+ "faye-websocket": "0.11.x",
+ "http-auth": "3.1.x",
+ "morgan": "^1.9.1",
+ "object-assign": "^4.1.1",
+ "opn": "^5.4.0",
+ "proxy-middleware": "^0.15.0",
+ "send": "^0.16.2",
+ "serve-index": "^1.9.1"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz",
+ "integrity": "sha1-nCPqQLAWOEOeBROGTTYq6sxa0Fg=",
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU="
+ }
+ }
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
+ },
+ "lodash._basebind": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._basebind/-/lodash._basebind-2.4.1.tgz",
+ "integrity": "sha1-6UC5690nwyfgqNqxtVkWxTQelXU=",
+ "requires": {
+ "lodash._basecreate": "~2.4.1",
+ "lodash._setbinddata": "~2.4.1",
+ "lodash._slice": "~2.4.1",
+ "lodash.isobject": "~2.4.1"
+ }
+ },
+ "lodash._basecreate": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-2.4.1.tgz",
+ "integrity": "sha1-+Ob1tXip405UEXm1a47uv0oofgg=",
+ "requires": {
+ "lodash._isnative": "~2.4.1",
+ "lodash.isobject": "~2.4.1",
+ "lodash.noop": "~2.4.1"
+ }
+ },
+ "lodash._basecreatecallback": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._basecreatecallback/-/lodash._basecreatecallback-2.4.1.tgz",
+ "integrity": "sha1-fQsmdknLKeehOdAQO3wR+uhOSFE=",
+ "requires": {
+ "lodash._setbinddata": "~2.4.1",
+ "lodash.bind": "~2.4.1",
+ "lodash.identity": "~2.4.1",
+ "lodash.support": "~2.4.1"
+ }
+ },
+ "lodash._basecreatewrapper": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._basecreatewrapper/-/lodash._basecreatewrapper-2.4.1.tgz",
+ "integrity": "sha1-TTHy595+E0+/KAN2K4FQsyUZZm8=",
+ "requires": {
+ "lodash._basecreate": "~2.4.1",
+ "lodash._setbinddata": "~2.4.1",
+ "lodash._slice": "~2.4.1",
+ "lodash.isobject": "~2.4.1"
+ }
+ },
+ "lodash._createwrapper": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-2.4.1.tgz",
+ "integrity": "sha1-UdaVeXPaTtVW43KQ2MGhjFPeFgc=",
+ "requires": {
+ "lodash._basebind": "~2.4.1",
+ "lodash._basecreatewrapper": "~2.4.1",
+ "lodash._slice": "~2.4.1",
+ "lodash.isfunction": "~2.4.1"
+ }
+ },
+ "lodash._isnative": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz",
+ "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw="
+ },
+ "lodash._objecttypes": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz",
+ "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE="
+ },
+ "lodash._setbinddata": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._setbinddata/-/lodash._setbinddata-2.4.1.tgz",
+ "integrity": "sha1-98IAzRuS7yNrOZ7s9zxkjReqlNI=",
+ "requires": {
+ "lodash._isnative": "~2.4.1",
+ "lodash.noop": "~2.4.1"
+ }
+ },
+ "lodash._shimisplainobject": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._shimisplainobject/-/lodash._shimisplainobject-2.4.1.tgz",
+ "integrity": "sha1-AeyTsu5j5Z8aqDiZrG+gkFrHWW8=",
+ "requires": {
+ "lodash.forin": "~2.4.1",
+ "lodash.isfunction": "~2.4.1"
+ }
+ },
+ "lodash._slice": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._slice/-/lodash._slice-2.4.1.tgz",
+ "integrity": "sha1-dFz0GlNZexj2iImFREBe+isG2Q8="
+ },
+ "lodash.bind": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-2.4.1.tgz",
+ "integrity": "sha1-XRn6AFyMTSNvr0dCx7eh/Kvikmc=",
+ "requires": {
+ "lodash._createwrapper": "~2.4.1",
+ "lodash._slice": "~2.4.1"
+ }
+ },
+ "lodash.forin": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.forin/-/lodash.forin-2.4.1.tgz",
+ "integrity": "sha1-gInq7X0lsIZyt8Zv0HrFXQYjIOs=",
+ "requires": {
+ "lodash._basecreatecallback": "~2.4.1",
+ "lodash._objecttypes": "~2.4.1"
+ }
+ },
+ "lodash.identity": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-2.4.1.tgz",
+ "integrity": "sha1-ZpTP+mX++TH3wxzobHRZfPVg9PE="
+ },
+ "lodash.isfunction": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz",
+ "integrity": "sha1-LP1XXHPkmKtX4xm3f6Aq3vE6lNE="
+ },
+ "lodash.isobject": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz",
+ "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=",
+ "requires": {
+ "lodash._objecttypes": "~2.4.1"
+ }
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
+ },
+ "lodash.noop": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.4.1.tgz",
+ "integrity": "sha1-T7VPgWZS5a4Q6PcvcXo4jHMmU4o="
+ },
+ "lodash.support": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.support/-/lodash.support-2.4.1.tgz",
+ "integrity": "sha1-Mg4LZwMWc8KNeiu12eAzGkUkBRU=",
+ "requires": {
+ "lodash._isnative": "~2.4.1"
+ }
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
+ },
+ "m-io": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/m-io/-/m-io-0.3.1.tgz",
+ "integrity": "sha1-SgeSJG9oGfdFyLxdlzzeiC8NHvs=",
+ "requires": {
+ "mkdirp": "^0.5.1",
+ "q": "^1.4.1",
+ "rimraf": "^2.5.3"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
+ },
+ "map-stream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
+ "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ="
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "marked": {
+ "version": "0.3.19",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
+ "integrity": "sha1-XUf3CcTJ/Dwha21GEnKA9As515A="
+ },
+ "math-random": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz",
+ "integrity": "sha1-XdaUPJOFSCZwFtTjTwV1gwgMUUw="
+ },
+ "merge2": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz",
+ "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA=="
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "requires": {
+ "arr-diff": "^2.0.0",
+ "array-unique": "^0.2.1",
+ "braces": "^1.8.2",
+ "expand-brackets": "^0.1.4",
+ "extglob": "^0.3.1",
+ "filename-regex": "^2.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.1",
+ "kind-of": "^3.0.2",
+ "normalize-path": "^2.0.1",
+ "object.omit": "^2.0.0",
+ "parse-glob": "^3.0.4",
+ "regex-cache": "^0.4.2"
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
+ "optional": true
+ },
+ "mime-db": {
+ "version": "1.38.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
+ "integrity": "sha1-GiqrFtqesWe0nG5N8tnGjWPY4q0="
+ },
+ "mime-types": {
+ "version": "2.1.22",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
+ "integrity": "sha1-/ms1WhkJJqt2mMmgVWoRGZshmb0=",
+ "requires": {
+ "mime-db": "~1.38.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=",
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "morgan": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
+ "integrity": "sha1-Co0Wc0odmvvIJLmd+H5zjlji2lk=",
+ "requires": {
+ "basic-auth": "~2.0.0",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "on-headers": "~1.0.1"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "nan": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
+ "integrity": "sha1-exqhk+mqhgV+PHu9CsRI53CSVVI=",
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+ }
+ }
+ },
+ "native-require": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/native-require/-/native-require-1.1.4.tgz",
+ "integrity": "sha512-fOB7diEP3ErNZnMh+Zqdufw79rIPrcAbHanixB5WoWpfU06ZfoUjynGDDQ22uKBhkpgzcI3WXQglhzpWBPKKGA=="
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+ },
+ "node-nailgun-client": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/node-nailgun-client/-/node-nailgun-client-0.1.2.tgz",
+ "integrity": "sha1-yO4vgiZmQCAZLkk2ysqt+aoTrik=",
+ "requires": {
+ "commander": "^2.8.1"
+ }
+ },
+ "node-nailgun-server": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/node-nailgun-server/-/node-nailgun-server-0.1.4.tgz",
+ "integrity": "sha1-gMvxrzdhEDDGCqiL5y1leZTfUNQ=",
+ "requires": {
+ "commander": "^2.8.1"
+ }
+ },
+ "node-plantuml": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/node-plantuml/-/node-plantuml-0.6.2.tgz",
+ "integrity": "sha1-zxWf5bwCilTVGB4kEDCSZtH95hc=",
+ "requires": {
+ "commander": "^2.8.1",
+ "node-nailgun-client": "^0.1.0",
+ "node-nailgun-server": "^0.1.3",
+ "plantuml-encoder": "^1.2.5"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "npm": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-5.1.0.tgz",
+ "integrity": "sha512-pt5ClxEmY/dLpb60SmGQQBKi3nB6Ljx1FXmpoCUdAULlGqGVn2uCyXxPCWFbcuHGthT7qGiaGa1wOfs/UjGYMw==",
+ "requires": {
+ "JSONStream": "~1.3.1",
+ "abbrev": "~1.1.0",
+ "ansi-regex": "~3.0.0",
+ "ansicolors": "~0.3.2",
+ "ansistyles": "~0.1.3",
+ "aproba": "~1.1.2",
+ "archy": "~1.0.0",
+ "bluebird": "~3.5.0",
+ "cacache": "~9.2.9",
+ "call-limit": "~1.1.0",
+ "chownr": "~1.0.1",
+ "cmd-shim": "~2.0.2",
+ "columnify": "~1.5.4",
+ "config-chain": "~1.1.11",
+ "debuglog": "*",
+ "detect-indent": "~5.0.0",
+ "dezalgo": "~1.0.3",
+ "editor": "~1.0.0",
+ "fs-vacuum": "~1.2.10",
+ "fs-write-stream-atomic": "~1.0.10",
+ "fstream": "~1.0.11",
+ "fstream-npm": "~1.2.1",
+ "glob": "~7.1.2",
+ "graceful-fs": "~4.1.11",
+ "has-unicode": "~2.0.1",
+ "hosted-git-info": "~2.5.0",
+ "iferr": "~0.1.5",
+ "imurmurhash": "*",
+ "inflight": "~1.0.6",
+ "inherits": "~2.0.3",
+ "ini": "~1.3.4",
+ "init-package-json": "~1.10.1",
+ "lazy-property": "~1.0.0",
+ "lockfile": "~1.0.3",
+ "lodash._baseindexof": "*",
+ "lodash._baseuniq": "~4.6.0",
+ "lodash._bindcallback": "*",
+ "lodash._cacheindexof": "*",
+ "lodash._createcache": "*",
+ "lodash._getnative": "*",
+ "lodash.clonedeep": "~4.5.0",
+ "lodash.restparam": "*",
+ "lodash.union": "~4.6.0",
+ "lodash.uniq": "~4.5.0",
+ "lodash.without": "~4.4.0",
+ "lru-cache": "~4.1.1",
+ "mississippi": "~1.3.0",
+ "mkdirp": "~0.5.1",
+ "move-concurrently": "~1.0.1",
+ "node-gyp": "~3.6.2",
+ "nopt": "~4.0.1",
+ "normalize-package-data": "~2.4.0",
+ "npm-cache-filename": "~1.0.2",
+ "npm-install-checks": "~3.0.0",
+ "npm-package-arg": "~5.1.2",
+ "npm-registry-client": "~8.4.0",
+ "npm-user-validate": "~1.0.0",
+ "npmlog": "~4.1.2",
+ "once": "~1.4.0",
+ "opener": "~1.4.3",
+ "osenv": "~0.1.4",
+ "pacote": "~2.7.38",
+ "path-is-inside": "~1.0.2",
+ "promise-inflight": "~1.0.1",
+ "read": "~1.0.7",
+ "read-cmd-shim": "~1.0.1",
+ "read-installed": "~4.0.3",
+ "read-package-json": "~2.0.9",
+ "read-package-tree": "~5.1.6",
+ "readable-stream": "~2.3.2",
+ "readdir-scoped-modules": "*",
+ "request": "~2.81.0",
+ "retry": "~0.10.1",
+ "rimraf": "~2.6.1",
+ "safe-buffer": "~5.1.1",
+ "semver": "~5.3.0",
+ "sha": "~2.0.1",
+ "slide": "~1.1.6",
+ "sorted-object": "~2.0.1",
+ "sorted-union-stream": "~2.1.3",
+ "ssri": "~4.1.6",
+ "strip-ansi": "~4.0.0",
+ "tar": "~2.2.1",
+ "text-table": "~0.2.0",
+ "uid-number": "0.0.6",
+ "umask": "~1.1.0",
+ "unique-filename": "~1.1.0",
+ "unpipe": "~1.0.0",
+ "update-notifier": "~2.2.0",
+ "uuid": "~3.1.0",
+ "validate-npm-package-license": "*",
+ "validate-npm-package-name": "~3.0.0",
+ "which": "~1.2.14",
+ "worker-farm": "~1.3.1",
+ "wrappy": "~1.0.2",
+ "write-file-atomic": "~2.1.0"
+ },
+ "dependencies": {
+ "JSONStream": {
+ "version": "1.3.1",
+ "bundled": true,
+ "requires": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 =0.5 0",
+ "rimraf": "2"
+ }
+ },
+ "fstream-npm": {
+ "version": "1.2.1",
+ "bundled": true,
+ "requires": {
+ "fstream-ignore": "^1.0.0",
+ "inherits": "2"
+ },
+ "dependencies": {
+ "fstream-ignore": {
+ "version": "1.0.5",
+ "bundled": true,
+ "requires": {
+ "fstream": "^1.0.0",
+ "inherits": "2",
+ "minimatch": "^3.0.0"
+ },
+ "dependencies": {
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.8",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "dependencies": {
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.8",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "bundled": true
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true
+ },
+ "hosted-git-info": {
+ "version": "2.5.0",
+ "bundled": true
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "bundled": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "bundled": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "ini": {
+ "version": "1.3.4",
+ "bundled": true
+ },
+ "init-package-json": {
+ "version": "1.10.1",
+ "bundled": true,
+ "requires": {
+ "glob": "^7.1.1",
+ "npm-package-arg": "^4.0.0 || ^5.0.0",
+ "promzard": "^0.3.0",
+ "read": "~1.0.1",
+ "read-package-json": "1 || 2",
+ "semver": "2.x || 3.x || 4 || 5",
+ "validate-npm-package-license": "^3.0.1",
+ "validate-npm-package-name": "^3.0.0"
+ },
+ "dependencies": {
+ "promzard": {
+ "version": "0.3.0",
+ "bundled": true,
+ "requires": {
+ "read": "1"
+ }
+ }
+ }
+ },
+ "lazy-property": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "lockfile": {
+ "version": "1.0.3",
+ "bundled": true
+ },
+ "lodash._baseindexof": {
+ "version": "3.1.0",
+ "bundled": true
+ },
+ "lodash._baseuniq": {
+ "version": "4.6.0",
+ "bundled": true,
+ "requires": {
+ "lodash._createset": "~4.0.0",
+ "lodash._root": "~3.0.0"
+ },
+ "dependencies": {
+ "lodash._createset": {
+ "version": "4.0.3",
+ "bundled": true
+ },
+ "lodash._root": {
+ "version": "3.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "lodash._bindcallback": {
+ "version": "3.0.1",
+ "bundled": true
+ },
+ "lodash._cacheindexof": {
+ "version": "3.0.2",
+ "bundled": true
+ },
+ "lodash._createcache": {
+ "version": "3.1.2",
+ "bundled": true,
+ "requires": {
+ "lodash._getnative": "^3.0.0"
+ }
+ },
+ "lodash._getnative": {
+ "version": "3.9.1",
+ "bundled": true
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "bundled": true
+ },
+ "lodash.restparam": {
+ "version": "3.6.1",
+ "bundled": true
+ },
+ "lodash.union": {
+ "version": "4.6.0",
+ "bundled": true
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "bundled": true
+ },
+ "lodash.without": {
+ "version": "4.4.0",
+ "bundled": true
+ },
+ "lru-cache": {
+ "version": "4.1.1",
+ "bundled": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ },
+ "dependencies": {
+ "pseudomap": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "bundled": true
+ }
+ }
+ },
+ "mississippi": {
+ "version": "1.3.0",
+ "bundled": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^1.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.6.0",
+ "bundled": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ },
+ "dependencies": {
+ "typedarray": {
+ "version": "0.0.6",
+ "bundled": true
+ }
+ }
+ },
+ "duplexify": {
+ "version": "3.5.0",
+ "bundled": true,
+ "requires": {
+ "end-of-stream": "1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ },
+ "dependencies": {
+ "end-of-stream": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "once": "~1.3.0"
+ },
+ "dependencies": {
+ "once": {
+ "version": "1.3.3",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ }
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "flush-write-stream": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.4"
+ }
+ },
+ "from2": {
+ "version": "2.3.0",
+ "bundled": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "parallel-transform": {
+ "version": "1.1.0",
+ "bundled": true,
+ "requires": {
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ },
+ "dependencies": {
+ "cyclist": {
+ "version": "0.2.2",
+ "bundled": true
+ }
+ }
+ },
+ "pump": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.3.5",
+ "bundled": true,
+ "requires": {
+ "duplexify": "^3.1.2",
+ "inherits": "^2.0.1",
+ "pump": "^1.0.0"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.0",
+ "bundled": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ },
+ "dependencies": {
+ "stream-shift": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "through2": {
+ "version": "2.0.3",
+ "bundled": true,
+ "requires": {
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
+ },
+ "dependencies": {
+ "xtend": {
+ "version": "4.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true
+ }
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "bundled": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ },
+ "dependencies": {
+ "copy-concurrently": {
+ "version": "1.0.3",
+ "bundled": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "bundled": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ }
+ }
+ },
+ "node-gyp": {
+ "version": "3.6.2",
+ "bundled": true,
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "minimatch": "^3.0.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "2",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
+ },
+ "dependencies": {
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.8",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "bundled": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ }
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "bundled": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "builtin-modules": "^1.0.0"
+ },
+ "dependencies": {
+ "builtin-modules": {
+ "version": "1.1.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "npm-cache-filename": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "npm-install-checks": {
+ "version": "3.0.0",
+ "bundled": true,
+ "requires": {
+ "semver": "^2.3.0 || 3.x || 4 || 5"
+ }
+ },
+ "npm-package-arg": {
+ "version": "5.1.2",
+ "bundled": true,
+ "requires": {
+ "hosted-git-info": "^2.4.2",
+ "osenv": "^0.1.4",
+ "semver": "^5.1.0",
+ "validate-npm-package-name": "^3.0.0"
+ }
+ },
+ "npm-registry-client": {
+ "version": "8.4.0",
+ "bundled": true,
+ "requires": {
+ "concat-stream": "^1.5.2",
+ "graceful-fs": "^4.1.6",
+ "normalize-package-data": "~1.0.1 || ^2.0.0",
+ "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0",
+ "npmlog": "2 || ^3.1.0 || ^4.0.0",
+ "once": "^1.3.3",
+ "request": "^2.74.0",
+ "retry": "^0.10.0",
+ "semver": "2 >=2.2.1 || 3.x || 4 || 5",
+ "slide": "^1.1.3",
+ "ssri": "^4.1.2"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.6.0",
+ "bundled": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ },
+ "dependencies": {
+ "typedarray": {
+ "version": "0.0.6",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "npm-user-validate": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ },
+ "dependencies": {
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "bundled": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ },
+ "dependencies": {
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ },
+ "dependencies": {
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "dependencies": {
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ },
+ "dependencies": {
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ }
+ }
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "bundled": true,
+ "requires": {
+ "string-width": "^1.0.2"
+ }
+ }
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "opener": {
+ "version": "1.4.3",
+ "bundled": true
+ },
+ "osenv": {
+ "version": "0.1.4",
+ "bundled": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ },
+ "dependencies": {
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "pacote": {
+ "version": "2.7.38",
+ "bundled": true,
+ "requires": {
+ "bluebird": "^3.5.0",
+ "cacache": "^9.2.9",
+ "glob": "^7.1.2",
+ "lru-cache": "^4.1.1",
+ "make-fetch-happen": "^2.4.13",
+ "minimatch": "^3.0.4",
+ "mississippi": "^1.2.0",
+ "normalize-package-data": "^2.4.0",
+ "npm-package-arg": "^5.1.2",
+ "npm-pick-manifest": "^1.0.4",
+ "osenv": "^0.1.4",
+ "promise-inflight": "^1.0.1",
+ "promise-retry": "^1.1.1",
+ "protoduck": "^4.0.0",
+ "safe-buffer": "^5.1.1",
+ "semver": "^5.3.0",
+ "ssri": "^4.1.6",
+ "tar-fs": "^1.15.3",
+ "tar-stream": "^1.5.4",
+ "unique-filename": "^1.1.0",
+ "which": "^1.2.12"
+ },
+ "dependencies": {
+ "make-fetch-happen": {
+ "version": "2.4.13",
+ "bundled": true,
+ "requires": {
+ "agentkeepalive": "^3.3.0",
+ "cacache": "^9.2.9",
+ "http-cache-semantics": "^3.7.3",
+ "http-proxy-agent": "^2.0.0",
+ "https-proxy-agent": "^2.0.0",
+ "lru-cache": "^4.1.1",
+ "mississippi": "^1.2.0",
+ "node-fetch-npm": "^2.0.1",
+ "promise-retry": "^1.1.1",
+ "socks-proxy-agent": "^3.0.0",
+ "ssri": "^4.1.6"
+ },
+ "dependencies": {
+ "agentkeepalive": {
+ "version": "3.3.0",
+ "bundled": true,
+ "requires": {
+ "humanize-ms": "^1.2.1"
+ },
+ "dependencies": {
+ "humanize-ms": {
+ "version": "1.2.1",
+ "bundled": true,
+ "requires": {
+ "ms": "^2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "http-cache-semantics": {
+ "version": "3.7.3",
+ "bundled": true
+ },
+ "http-proxy-agent": {
+ "version": "2.0.0",
+ "bundled": true,
+ "requires": {
+ "agent-base": "4",
+ "debug": "2"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "4.1.0",
+ "bundled": true,
+ "requires": {
+ "es6-promisify": "^5.0.0"
+ },
+ "dependencies": {
+ "es6-promisify": {
+ "version": "5.0.0",
+ "bundled": true,
+ "requires": {
+ "es6-promise": "^4.0.3"
+ },
+ "dependencies": {
+ "es6-promise": {
+ "version": "4.1.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.8",
+ "bundled": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "https-proxy-agent": {
+ "version": "2.0.0",
+ "bundled": true,
+ "requires": {
+ "agent-base": "^4.1.0",
+ "debug": "^2.4.1"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "4.1.0",
+ "bundled": true,
+ "requires": {
+ "es6-promisify": "^5.0.0"
+ },
+ "dependencies": {
+ "es6-promisify": {
+ "version": "5.0.0",
+ "bundled": true,
+ "requires": {
+ "es6-promise": "^4.0.3"
+ },
+ "dependencies": {
+ "es6-promise": {
+ "version": "4.1.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.8",
+ "bundled": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "node-fetch-npm": {
+ "version": "2.0.1",
+ "bundled": true,
+ "requires": {
+ "encoding": "^0.1.11",
+ "json-parse-helpfulerror": "^1.0.3",
+ "safe-buffer": "^5.0.1"
+ },
+ "dependencies": {
+ "encoding": {
+ "version": "0.1.12",
+ "bundled": true,
+ "requires": {
+ "iconv-lite": "~0.4.13"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.18",
+ "bundled": true
+ }
+ }
+ },
+ "json-parse-helpfulerror": {
+ "version": "1.0.3",
+ "bundled": true,
+ "requires": {
+ "jju": "^1.1.0"
+ },
+ "dependencies": {
+ "jju": {
+ "version": "1.3.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "socks-proxy-agent": {
+ "version": "3.0.0",
+ "bundled": true,
+ "requires": {
+ "agent-base": "^4.0.1",
+ "socks": "^1.1.10"
+ },
+ "dependencies": {
+ "agent-base": {
+ "version": "4.1.0",
+ "bundled": true,
+ "requires": {
+ "es6-promisify": "^5.0.0"
+ },
+ "dependencies": {
+ "es6-promisify": {
+ "version": "5.0.0",
+ "bundled": true,
+ "requires": {
+ "es6-promise": "^4.0.3"
+ },
+ "dependencies": {
+ "es6-promise": {
+ "version": "4.1.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "socks": {
+ "version": "1.1.10",
+ "bundled": true,
+ "requires": {
+ "ip": "^1.1.4",
+ "smart-buffer": "^1.0.13"
+ },
+ "dependencies": {
+ "ip": {
+ "version": "1.1.5",
+ "bundled": true
+ },
+ "smart-buffer": {
+ "version": "1.1.15",
+ "bundled": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.8",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "npm-pick-manifest": {
+ "version": "1.0.4",
+ "bundled": true,
+ "requires": {
+ "npm-package-arg": "^5.1.2",
+ "semver": "^5.3.0"
+ }
+ },
+ "promise-retry": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "err-code": "^1.0.0",
+ "retry": "^0.10.0"
+ },
+ "dependencies": {
+ "err-code": {
+ "version": "1.1.2",
+ "bundled": true
+ }
+ }
+ },
+ "protoduck": {
+ "version": "4.0.0",
+ "bundled": true,
+ "requires": {
+ "genfun": "^4.0.1"
+ },
+ "dependencies": {
+ "genfun": {
+ "version": "4.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "tar-fs": {
+ "version": "1.15.3",
+ "bundled": true,
+ "requires": {
+ "chownr": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pump": "^1.0.0",
+ "tar-stream": "^1.1.2"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ },
+ "dependencies": {
+ "end-of-stream": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tar-stream": {
+ "version": "1.5.4",
+ "bundled": true,
+ "requires": {
+ "bl": "^1.0.0",
+ "end-of-stream": "^1.0.0",
+ "readable-stream": "^2.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "bl": {
+ "version": "1.2.1",
+ "bundled": true,
+ "requires": {
+ "readable-stream": "^2.0.5"
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "read": {
+ "version": "1.0.7",
+ "bundled": true,
+ "requires": {
+ "mute-stream": "~0.0.4"
+ },
+ "dependencies": {
+ "mute-stream": {
+ "version": "0.0.7",
+ "bundled": true
+ }
+ }
+ },
+ "read-cmd-shim": {
+ "version": "1.0.1",
+ "bundled": true,
+ "requires": {
+ "graceful-fs": "^4.1.2"
+ }
+ },
+ "read-installed": {
+ "version": "4.0.3",
+ "bundled": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "graceful-fs": "^4.1.2",
+ "read-package-json": "^2.0.0",
+ "readdir-scoped-modules": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "slide": "~1.1.3",
+ "util-extend": "^1.0.1"
+ },
+ "dependencies": {
+ "util-extend": {
+ "version": "1.0.3",
+ "bundled": true
+ }
+ }
+ },
+ "read-package-json": {
+ "version": "2.0.9",
+ "bundled": true,
+ "requires": {
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.1.2",
+ "json-parse-helpfulerror": "^1.0.2",
+ "normalize-package-data": "^2.0.0"
+ },
+ "dependencies": {
+ "json-parse-helpfulerror": {
+ "version": "1.0.3",
+ "bundled": true,
+ "requires": {
+ "jju": "^1.1.0"
+ },
+ "dependencies": {
+ "jju": {
+ "version": "1.3.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "read-package-tree": {
+ "version": "5.1.6",
+ "bundled": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "once": "^1.3.0",
+ "read-package-json": "^2.0.0",
+ "readdir-scoped-modules": "^1.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.2",
+ "bundled": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "safe-buffer": "~5.1.0",
+ "string_decoder": "~1.0.0",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "bundled": true
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "readdir-scoped-modules": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "graceful-fs": "^4.1.2",
+ "once": "^1.3.0"
+ }
+ },
+ "request": {
+ "version": "2.81.0",
+ "bundled": true,
+ "requires": {
+ "aws-sign2": "~0.6.0",
+ "aws4": "^1.2.1",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.0",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.1.1",
+ "har-validator": "~4.2.1",
+ "hawk": "~3.1.3",
+ "http-signature": "~1.1.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.7",
+ "oauth-sign": "~0.8.1",
+ "performance-now": "^0.2.0",
+ "qs": "~6.4.0",
+ "safe-buffer": "^5.0.1",
+ "stringstream": "~0.0.4",
+ "tough-cookie": "~2.3.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.0.0"
+ },
+ "dependencies": {
+ "aws-sign2": {
+ "version": "0.6.0",
+ "bundled": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "bundled": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "bundled": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "bundled": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ },
+ "dependencies": {
+ "delayed-stream": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "bundled": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "bundled": true
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "bundled": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.5",
+ "mime-types": "^2.1.12"
+ },
+ "dependencies": {
+ "asynckit": {
+ "version": "0.4.0",
+ "bundled": true
+ }
+ }
+ },
+ "har-validator": {
+ "version": "4.2.1",
+ "bundled": true,
+ "requires": {
+ "ajv": "^4.9.1",
+ "har-schema": "^1.0.5"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "4.11.8",
+ "bundled": true,
+ "requires": {
+ "co": "^4.6.0",
+ "json-stable-stringify": "^1.0.1"
+ },
+ "dependencies": {
+ "co": {
+ "version": "4.6.0",
+ "bundled": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "bundled": true,
+ "requires": {
+ "jsonify": "~0.0.0"
+ },
+ "dependencies": {
+ "jsonify": {
+ "version": "0.0.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "har-schema": {
+ "version": "1.0.5",
+ "bundled": true
+ }
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "bundled": true,
+ "requires": {
+ "boom": "2.x.x",
+ "cryptiles": "2.x.x",
+ "hoek": "2.x.x",
+ "sntp": "1.x.x"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "2.10.1",
+ "bundled": true,
+ "requires": {
+ "hoek": "2.x.x"
+ }
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "bundled": true,
+ "requires": {
+ "boom": "2.x.x"
+ }
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "bundled": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "bundled": true,
+ "requires": {
+ "hoek": "2.x.x"
+ }
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "^0.2.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "0.2.0",
+ "bundled": true
+ },
+ "jsprim": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.0.2",
+ "json-schema": "0.2.3",
+ "verror": "1.3.6"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "extsprintf": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "bundled": true
+ },
+ "verror": {
+ "version": "1.3.6",
+ "bundled": true,
+ "requires": {
+ "extsprintf": "1.0.2"
+ }
+ }
+ }
+ },
+ "sshpk": {
+ "version": "1.13.1",
+ "bundled": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "tweetnacl": "~0.14.0"
+ },
+ "dependencies": {
+ "asn1": {
+ "version": "0.2.3",
+ "bundled": true
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0"
+ }
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "bundled": true,
+ "optional": true
+ }
+ }
+ }
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "bundled": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "bundled": true
+ },
+ "mime-types": {
+ "version": "2.1.15",
+ "bundled": true,
+ "requires": {
+ "mime-db": "~1.27.0"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.27.0",
+ "bundled": true
+ }
+ }
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "bundled": true
+ },
+ "performance-now": {
+ "version": "0.2.0",
+ "bundled": true
+ },
+ "qs": {
+ "version": "6.4.0",
+ "bundled": true
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "bundled": true
+ },
+ "tough-cookie": {
+ "version": "2.3.2",
+ "bundled": true,
+ "requires": {
+ "punycode": "^1.4.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "bundled": true
+ }
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ }
+ }
+ },
+ "retry": {
+ "version": "0.10.1",
+ "bundled": true
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "bundled": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "bundled": true
+ },
+ "semver": {
+ "version": "5.3.0",
+ "bundled": true
+ },
+ "sha": {
+ "version": "2.0.1",
+ "bundled": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "slide": {
+ "version": "1.1.6",
+ "bundled": true
+ },
+ "sorted-object": {
+ "version": "2.0.1",
+ "bundled": true
+ },
+ "sorted-union-stream": {
+ "version": "2.1.3",
+ "bundled": true,
+ "requires": {
+ "from2": "^1.3.0",
+ "stream-iterate": "^1.1.0"
+ },
+ "dependencies": {
+ "from2": {
+ "version": "1.3.0",
+ "bundled": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "~1.1.10"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "1.1.14",
+ "bundled": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "bundled": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "stream-iterate": {
+ "version": "1.2.0",
+ "bundled": true,
+ "requires": {
+ "readable-stream": "^2.1.5",
+ "stream-shift": "^1.0.0"
+ },
+ "dependencies": {
+ "stream-shift": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "ssri": {
+ "version": "4.1.6",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "tar": {
+ "version": "2.2.1",
+ "bundled": true,
+ "requires": {
+ "block-stream": "*",
+ "fstream": "^1.0.2",
+ "inherits": "2"
+ },
+ "dependencies": {
+ "block-stream": {
+ "version": "0.0.9",
+ "bundled": true,
+ "requires": {
+ "inherits": "~2.0.0"
+ }
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "bundled": true
+ },
+ "uid-number": {
+ "version": "0.0.6",
+ "bundled": true
+ },
+ "umask": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "unique-filename": {
+ "version": "1.1.0",
+ "bundled": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ },
+ "dependencies": {
+ "unique-slug": {
+ "version": "2.0.0",
+ "bundled": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ }
+ }
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "update-notifier": {
+ "version": "2.2.0",
+ "bundled": true,
+ "requires": {
+ "boxen": "^1.0.0",
+ "chalk": "^1.0.0",
+ "configstore": "^3.0.0",
+ "import-lazy": "^2.1.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^3.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "boxen": {
+ "version": "1.1.0",
+ "bundled": true,
+ "requires": {
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^1.1.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^0.1.0",
+ "widest-line": "^1.0.0"
+ },
+ "dependencies": {
+ "ansi-align": {
+ "version": "2.0.0",
+ "bundled": true,
+ "requires": {
+ "string-width": "^2.0.0"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "bundled": true
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "string-width": {
+ "version": "2.1.0",
+ "bundled": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "term-size": {
+ "version": "0.1.1",
+ "bundled": true,
+ "requires": {
+ "execa": "^0.4.0"
+ },
+ "dependencies": {
+ "execa": {
+ "version": "0.4.0",
+ "bundled": true,
+ "requires": {
+ "cross-spawn-async": "^2.1.1",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "path-key": "^1.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "dependencies": {
+ "cross-spawn-async": {
+ "version": "2.2.5",
+ "bundled": true,
+ "requires": {
+ "lru-cache": "^4.0.0",
+ "which": "^1.2.8"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "npm-run-path": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "path-key": "^1.0.0"
+ }
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true
+ },
+ "path-key": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "widest-line": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "string-width": "^1.0.1"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "dependencies": {
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ },
+ "dependencies": {
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "bundled": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "bundled": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "bundled": true
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "configstore": {
+ "version": "3.1.0",
+ "bundled": true,
+ "requires": {
+ "dot-prop": "^4.1.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "dot-prop": {
+ "version": "4.1.1",
+ "bundled": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "is-obj": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "make-dir": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "pify": "^2.3.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "bundled": true
+ }
+ }
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "crypto-random-string": "^1.0.0"
+ },
+ "dependencies": {
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "bundled": true
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "bundled": true,
+ "requires": {
+ "package-json": "^4.0.0"
+ },
+ "dependencies": {
+ "package-json": {
+ "version": "4.0.1",
+ "bundled": true,
+ "requires": {
+ "got": "^6.7.1",
+ "registry-auth-token": "^3.0.1",
+ "registry-url": "^3.0.3",
+ "semver": "^5.1.0"
+ },
+ "dependencies": {
+ "got": {
+ "version": "6.7.1",
+ "bundled": true,
+ "requires": {
+ "create-error-class": "^3.0.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
+ "is-redirect": "^1.0.0",
+ "is-retry-allowed": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "safe-buffer": "^5.0.1",
+ "timed-out": "^4.0.0",
+ "unzip-response": "^2.0.1",
+ "url-parse-lax": "^1.0.0"
+ },
+ "dependencies": {
+ "create-error-class": {
+ "version": "3.0.2",
+ "bundled": true,
+ "requires": {
+ "capture-stack-trace": "^1.0.0"
+ },
+ "dependencies": {
+ "capture-stack-trace": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "bundled": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "bundled": true
+ },
+ "is-redirect": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "lowercase-keys": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "timed-out": {
+ "version": "4.0.1",
+ "bundled": true
+ },
+ "unzip-response": {
+ "version": "2.0.1",
+ "bundled": true
+ },
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "prepend-http": "^1.0.1"
+ },
+ "dependencies": {
+ "prepend-http": {
+ "version": "1.0.4",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "registry-auth-token": {
+ "version": "3.3.1",
+ "bundled": true,
+ "requires": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
+ },
+ "dependencies": {
+ "rc": {
+ "version": "1.2.1",
+ "bundled": true,
+ "requires": {
+ "deep-extend": "~0.4.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "deep-extend": {
+ "version": "0.4.2",
+ "bundled": true
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "bundled": true,
+ "requires": {
+ "rc": "^1.0.1"
+ },
+ "dependencies": {
+ "rc": {
+ "version": "1.2.1",
+ "bundled": true,
+ "requires": {
+ "deep-extend": "~0.4.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "deep-extend": {
+ "version": "0.4.2",
+ "bundled": true
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "bundled": true,
+ "requires": {
+ "semver": "^5.0.3"
+ }
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "uuid": {
+ "version": "3.1.0",
+ "bundled": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "spdx-correct": "~1.0.0",
+ "spdx-expression-parse": "~1.0.0"
+ },
+ "dependencies": {
+ "spdx-correct": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "spdx-license-ids": "^1.0.2"
+ },
+ "dependencies": {
+ "spdx-license-ids": {
+ "version": "1.2.2",
+ "bundled": true
+ }
+ }
+ },
+ "spdx-expression-parse": {
+ "version": "1.0.4",
+ "bundled": true
+ }
+ }
+ },
+ "validate-npm-package-name": {
+ "version": "3.0.0",
+ "bundled": true,
+ "requires": {
+ "builtins": "^1.0.3"
+ },
+ "dependencies": {
+ "builtins": {
+ "version": "1.0.3",
+ "bundled": true
+ }
+ }
+ },
+ "which": {
+ "version": "1.2.14",
+ "bundled": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ },
+ "dependencies": {
+ "isexe": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "worker-farm": {
+ "version": "1.3.1",
+ "bundled": true,
+ "requires": {
+ "errno": ">=0.1.1 =4.0.0 =0.5 0",
+ "rimraf": "2"
+ }
+ },
+ "fstream-npm": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "fstream-ignore": "^1.0.0",
+ "inherits": "2"
+ },
+ "dependencies": {
+ "fstream-ignore": {
+ "version": "1.0.5",
+ "bundled": true,
+ "requires": {
+ "fstream": "^1.0.0",
+ "inherits": "2",
+ "minimatch": "^3.0.0"
+ }
+ }
+ }
+ },
+ "github-url-from-git": {
+ "version": "1.4.0",
+ "bundled": true
+ },
+ "github-url-from-username-repo": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "glob": {
+ "version": "7.0.6",
+ "bundled": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.2",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "dependencies": {
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.6",
+ "bundled": true
+ },
+ "hosted-git-info": {
+ "version": "2.1.5",
+ "bundled": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "bundled": true
+ },
+ "inflight": {
+ "version": "1.0.5",
+ "bundled": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "ini": {
+ "version": "1.3.4",
+ "bundled": true
+ },
+ "init-package-json": {
+ "version": "1.9.4",
+ "bundled": true,
+ "requires": {
+ "glob": "^6.0.0",
+ "npm-package-arg": "^4.0.0",
+ "promzard": "^0.3.0",
+ "read": "~1.0.1",
+ "read-package-json": "1 || 2",
+ "semver": "2.x || 3.x || 4 || 5",
+ "validate-npm-package-license": "^3.0.1",
+ "validate-npm-package-name": "^2.0.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "6.0.4",
+ "bundled": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "dependencies": {
+ "path-is-absolute": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "promzard": {
+ "version": "0.3.0",
+ "bundled": true,
+ "requires": {
+ "read": "1"
+ }
+ }
+ }
+ },
+ "lockfile": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "lru-cache": {
+ "version": "4.0.1",
+ "bundled": true,
+ "requires": {
+ "pseudomap": "^1.0.1",
+ "yallist": "^2.0.0"
+ },
+ "dependencies": {
+ "pseudomap": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "yallist": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "minimatch": {
+ "version": "3.0.3",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "^1.0.0"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.6",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "^0.4.1",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.4.2",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true
+ }
+ }
+ },
+ "node-gyp": {
+ "version": "3.6.0",
+ "bundled": true,
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "minimatch": "^3.0.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "2",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "bundled": true
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "bundled": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "normalize-git-url": {
+ "version": "3.0.2",
+ "bundled": true
+ },
+ "normalize-package-data": {
+ "version": "2.3.5",
+ "bundled": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "builtin-modules": "^1.0.0"
+ },
+ "dependencies": {
+ "builtin-modules": {
+ "version": "1.1.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "npm-cache-filename": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "npm-install-checks": {
+ "version": "1.0.7",
+ "bundled": true,
+ "requires": {
+ "npmlog": "0.1 || 1 || 2",
+ "semver": "^2.3.0 || 3.x || 4 || 5"
+ }
+ },
+ "npm-package-arg": {
+ "version": "4.1.0",
+ "bundled": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "semver": "4 || 5"
+ }
+ },
+ "npm-registry-client": {
+ "version": "7.2.1",
+ "bundled": true,
+ "requires": {
+ "concat-stream": "^1.5.2",
+ "graceful-fs": "^4.1.6",
+ "normalize-package-data": "~1.0.1 || ^2.0.0",
+ "npm-package-arg": "^3.0.0 || ^4.0.0",
+ "npmlog": "~2.0.0 || ~3.1.0",
+ "once": "^1.3.3",
+ "request": "^2.74.0",
+ "retry": "^0.10.0",
+ "semver": "2 >=2.2.1 || 3.x || 4 || 5",
+ "slide": "^1.1.3"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.5.2",
+ "bundled": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "~2.0.0",
+ "typedarray": "~0.0.5"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "bundled": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "string_decoder": "~0.10.x",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "bundled": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "bundled": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "bundled": true
+ }
+ }
+ },
+ "retry": {
+ "version": "0.10.0",
+ "bundled": true
+ }
+ }
+ },
+ "npm-user-validate": {
+ "version": "0.1.5",
+ "bundled": true
+ },
+ "npmlog": {
+ "version": "2.0.4",
+ "bundled": true,
+ "requires": {
+ "ansi": "~0.3.1",
+ "are-we-there-yet": "~1.1.2",
+ "gauge": "~1.2.5"
+ },
+ "dependencies": {
+ "are-we-there-yet": {
+ "version": "1.1.2",
+ "bundled": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.0 || ^1.1.13"
+ },
+ "dependencies": {
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "gauge": {
+ "version": "1.2.7",
+ "bundled": true,
+ "requires": {
+ "ansi": "^0.3.0",
+ "has-unicode": "^2.0.0",
+ "lodash.pad": "^4.1.0",
+ "lodash.padend": "^4.1.0",
+ "lodash.padstart": "^4.1.0"
+ },
+ "dependencies": {
+ "has-unicode": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "lodash._baseslice": {
+ "version": "4.0.0",
+ "bundled": true
+ },
+ "lodash._basetostring": {
+ "version": "4.12.0",
+ "bundled": true
+ },
+ "lodash.pad": {
+ "version": "4.4.0",
+ "bundled": true,
+ "requires": {
+ "lodash._baseslice": "~4.0.0",
+ "lodash._basetostring": "~4.12.0",
+ "lodash.tostring": "^4.0.0"
+ }
+ },
+ "lodash.padend": {
+ "version": "4.5.0",
+ "bundled": true,
+ "requires": {
+ "lodash._baseslice": "~4.0.0",
+ "lodash._basetostring": "~4.12.0",
+ "lodash.tostring": "^4.0.0"
+ }
+ },
+ "lodash.padstart": {
+ "version": "4.5.0",
+ "bundled": true,
+ "requires": {
+ "lodash._baseslice": "~4.0.0",
+ "lodash._basetostring": "~4.12.0",
+ "lodash.tostring": "^4.0.0"
+ }
+ },
+ "lodash.tostring": {
+ "version": "4.1.4",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "opener": {
+ "version": "1.4.1",
+ "bundled": true
+ },
+ "osenv": {
+ "version": "0.1.3",
+ "bundled": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ },
+ "dependencies": {
+ "os-homedir": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "path-is-inside": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "read": {
+ "version": "1.0.7",
+ "bundled": true,
+ "requires": {
+ "mute-stream": "~0.0.4"
+ },
+ "dependencies": {
+ "mute-stream": {
+ "version": "0.0.5",
+ "bundled": true
+ }
+ }
+ },
+ "read-installed": {
+ "version": "4.0.3",
+ "bundled": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "graceful-fs": "^4.1.2",
+ "read-package-json": "^2.0.0",
+ "readdir-scoped-modules": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "slide": "~1.1.3",
+ "util-extend": "^1.0.1"
+ },
+ "dependencies": {
+ "debuglog": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "readdir-scoped-modules": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "graceful-fs": "^4.1.2",
+ "once": "^1.3.0"
+ }
+ },
+ "util-extend": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "read-package-json": {
+ "version": "2.0.4",
+ "bundled": true,
+ "requires": {
+ "glob": "^6.0.0",
+ "graceful-fs": "^4.1.2",
+ "json-parse-helpfulerror": "^1.0.2",
+ "normalize-package-data": "^2.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "6.0.4",
+ "bundled": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "dependencies": {
+ "path-is-absolute": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "json-parse-helpfulerror": {
+ "version": "1.0.3",
+ "bundled": true,
+ "requires": {
+ "jju": "^1.1.0"
+ },
+ "dependencies": {
+ "jju": {
+ "version": "1.3.0",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.1.5",
+ "bundled": true,
+ "requires": {
+ "buffer-shims": "^1.0.0",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "string_decoder": "~0.10.x",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "buffer-shims": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "bundled": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "bundled": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "realize-package-specifier": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "dezalgo": "^1.0.1",
+ "npm-package-arg": "^4.0.0"
+ }
+ },
+ "request": {
+ "version": "2.74.0",
+ "bundled": true,
+ "requires": {
+ "aws-sign2": "~0.6.0",
+ "aws4": "^1.2.1",
+ "bl": "~1.1.2",
+ "caseless": "~0.11.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.0",
+ "forever-agent": "~0.6.1",
+ "form-data": "~1.0.0-rc4",
+ "har-validator": "~2.0.6",
+ "hawk": "~3.1.3",
+ "http-signature": "~1.1.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.7",
+ "node-uuid": "~1.4.7",
+ "oauth-sign": "~0.8.1",
+ "qs": "~6.2.0",
+ "stringstream": "~0.0.4",
+ "tough-cookie": "~2.3.0",
+ "tunnel-agent": "~0.4.1"
+ },
+ "dependencies": {
+ "aws-sign2": {
+ "version": "0.6.0",
+ "bundled": true
+ },
+ "aws4": {
+ "version": "1.4.1",
+ "bundled": true
+ },
+ "bl": {
+ "version": "1.1.2",
+ "bundled": true,
+ "requires": {
+ "readable-stream": "~2.0.5"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "bundled": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "string_decoder": "~0.10.x",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "bundled": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "bundled": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "caseless": {
+ "version": "0.11.0",
+ "bundled": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "bundled": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ },
+ "dependencies": {
+ "delayed-stream": {
+ "version": "1.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.0",
+ "bundled": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "bundled": true
+ },
+ "form-data": {
+ "version": "1.0.0-rc4",
+ "bundled": true,
+ "requires": {
+ "async": "^1.5.2",
+ "combined-stream": "^1.0.5",
+ "mime-types": "^2.1.10"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "bundled": true
+ }
+ }
+ },
+ "har-validator": {
+ "version": "2.0.6",
+ "bundled": true,
+ "requires": {
+ "chalk": "^1.1.1",
+ "commander": "^2.9.0",
+ "is-my-json-valid": "^2.12.4",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "bundled": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "bundled": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "bundled": true
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "bundled": true
+ }
+ }
+ },
+ "commander": {
+ "version": "2.9.0",
+ "bundled": true,
+ "requires": {
+ "graceful-readlink": ">= 1.0.0"
+ },
+ "dependencies": {
+ "graceful-readlink": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "is-my-json-valid": {
+ "version": "2.13.1",
+ "bundled": true,
+ "requires": {
+ "generate-function": "^2.0.0",
+ "generate-object-property": "^1.1.0",
+ "jsonpointer": "2.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "generate-function": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "generate-object-property": {
+ "version": "1.2.0",
+ "bundled": true,
+ "requires": {
+ "is-property": "^1.0.0"
+ },
+ "dependencies": {
+ "is-property": {
+ "version": "1.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "jsonpointer": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "bundled": true
+ }
+ }
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "bundled": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ },
+ "dependencies": {
+ "pinkie": {
+ "version": "2.0.4",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "bundled": true,
+ "requires": {
+ "boom": "2.x.x",
+ "cryptiles": "2.x.x",
+ "hoek": "2.x.x",
+ "sntp": "1.x.x"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "2.10.1",
+ "bundled": true,
+ "requires": {
+ "hoek": "2.x.x"
+ }
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "bundled": true,
+ "requires": {
+ "boom": "2.x.x"
+ }
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "bundled": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "bundled": true,
+ "requires": {
+ "hoek": "2.x.x"
+ }
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "^0.2.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "0.2.0",
+ "bundled": true
+ },
+ "jsprim": {
+ "version": "1.3.0",
+ "bundled": true,
+ "requires": {
+ "extsprintf": "1.0.2",
+ "json-schema": "0.2.2",
+ "verror": "1.3.6"
+ },
+ "dependencies": {
+ "extsprintf": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "json-schema": {
+ "version": "0.2.2",
+ "bundled": true
+ },
+ "verror": {
+ "version": "1.3.6",
+ "bundled": true,
+ "requires": {
+ "extsprintf": "1.0.2"
+ }
+ }
+ }
+ },
+ "sshpk": {
+ "version": "1.9.2",
+ "bundled": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jodid25519": "^1.0.0",
+ "jsbn": "~0.1.0",
+ "tweetnacl": "~0.13.0"
+ },
+ "dependencies": {
+ "asn1": {
+ "version": "0.2.3",
+ "bundled": true
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "dashdash": {
+ "version": "1.14.0",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0"
+ }
+ },
+ "getpass": {
+ "version": "0.1.6",
+ "bundled": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "jodid25519": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.0",
+ "bundled": true,
+ "optional": true
+ },
+ "tweetnacl": {
+ "version": "0.13.3",
+ "bundled": true,
+ "optional": true
+ }
+ }
+ }
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "bundled": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "bundled": true
+ },
+ "mime-types": {
+ "version": "2.1.11",
+ "bundled": true,
+ "requires": {
+ "mime-db": "~1.23.0"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.23.0",
+ "bundled": true
+ }
+ }
+ },
+ "node-uuid": {
+ "version": "1.4.7",
+ "bundled": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "bundled": true
+ },
+ "qs": {
+ "version": "6.2.1",
+ "bundled": true
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "bundled": true
+ },
+ "tough-cookie": {
+ "version": "2.3.1",
+ "bundled": true
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "bundled": true
+ }
+ }
+ },
+ "retry": {
+ "version": "0.10.0",
+ "bundled": true
+ },
+ "rimraf": {
+ "version": "2.5.4",
+ "bundled": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "semver": {
+ "version": "5.1.0",
+ "bundled": true
+ },
+ "sha": {
+ "version": "2.0.1",
+ "bundled": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.2",
+ "bundled": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "process-nextick-args": "~1.0.0",
+ "string_decoder": "~0.10.x",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "bundled": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.3",
+ "bundled": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "bundled": true
+ },
+ "util-deprecate": {
+ "version": "1.0.1",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "slide": {
+ "version": "1.1.6",
+ "bundled": true
+ },
+ "sorted-object": {
+ "version": "2.0.0",
+ "bundled": true
+ },
+ "spdx-license-ids": {
+ "version": "1.2.2",
+ "bundled": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "tar": {
+ "version": "2.2.1",
+ "bundled": true,
+ "requires": {
+ "block-stream": "*",
+ "fstream": "^1.0.2",
+ "inherits": "2"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "bundled": true
+ },
+ "uid-number": {
+ "version": "0.0.6",
+ "bundled": true
+ },
+ "umask": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "spdx-correct": "~1.0.0",
+ "spdx-expression-parse": "~1.0.0"
+ },
+ "dependencies": {
+ "spdx-correct": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "spdx-license-ids": "^1.0.2"
+ }
+ },
+ "spdx-expression-parse": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "spdx-exceptions": "^1.0.4",
+ "spdx-license-ids": "^1.0.0"
+ },
+ "dependencies": {
+ "spdx-exceptions": {
+ "version": "1.0.4",
+ "bundled": true
+ }
+ }
+ }
+ }
+ },
+ "validate-npm-package-name": {
+ "version": "2.2.2",
+ "bundled": true,
+ "requires": {
+ "builtins": "0.0.7"
+ },
+ "dependencies": {
+ "builtins": {
+ "version": "0.0.7",
+ "bundled": true
+ }
+ }
+ },
+ "which": {
+ "version": "1.2.11",
+ "bundled": true,
+ "requires": {
+ "isexe": "^1.1.1"
+ },
+ "dependencies": {
+ "isexe": {
+ "version": "1.1.2",
+ "bundled": true
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "write-file-atomic": {
+ "version": "1.1.4",
+ "bundled": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "imurmurhash": "^0.1.4",
+ "slide": "^1.1.5"
+ }
+ }
+ }
+ },
+ "semver": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto="
+ }
+ }
+ },
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=",
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "nwmatcher": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz",
+ "integrity": "sha1-IoVjHzSpXw0Dlc2QDJbtObWPNG4=",
+ "optional": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "requires": {
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "requires": {
+ "for-own": "^0.1.4",
+ "is-extendable": "^0.1.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "opn": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz",
+ "integrity": "sha1-y1Reeqt4VivrEao7+rxwQuF2EDU=",
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "optional": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.4",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "wordwrap": "~1.0.0"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "optional": true
+ }
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "pako": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.3.tgz",
+ "integrity": "sha1-X1FbDGci4ZgpIK6ABerLC3ynPM8="
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "requires": {
+ "glob-base": "^0.3.0",
+ "is-dotfile": "^1.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.0"
+ }
+ },
+ "parse5": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz",
+ "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=",
+ "optional": true
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "pause-stream": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+ "requires": {
+ "through": "~2.3"
+ }
+ },
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
+ },
+ "performance-now": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+ "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
+ },
+ "phantomjs-prebuilt": {
+ "version": "2.1.16",
+ "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz",
+ "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=",
+ "requires": {
+ "es6-promise": "^4.0.3",
+ "extract-zip": "^1.6.5",
+ "fs-extra": "^1.0.0",
+ "hasha": "^2.2.0",
+ "kew": "^0.7.0",
+ "progress": "^1.1.8",
+ "request": "^2.81.0",
+ "request-progress": "^2.0.1",
+ "which": "^1.2.10"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
+ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.0.0"
+ }
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ }
+ }
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "plantuml-encoder": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.2.5.tgz",
+ "integrity": "sha1-a45bnhodvYiz/Z+0b3NO7H1EtUg=",
+ "requires": {
+ "pako": "1.0.3",
+ "utf8-bytes": "0.0.1"
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "optional": true
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o="
+ },
+ "progress": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74="
+ },
+ "promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=",
+ "optional": true,
+ "requires": {
+ "asap": "~2.0.3"
+ }
+ },
+ "promised-handlebars": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/promised-handlebars/-/promised-handlebars-1.0.6.tgz",
+ "integrity": "sha1-2ZfglDsD9j/oL/I8uQSyes/AUNg=",
+ "requires": {
+ "deep-aplus": "^1.0.2",
+ "q": "^1.4.1"
+ }
+ },
+ "proxy-middleware": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz",
+ "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY="
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "optional": true
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
+ },
+ "q-deep": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/q-deep/-/q-deep-1.0.3.tgz",
+ "integrity": "sha1-zQcD2irMuuZXDmAMaKVt5mEHkMs=",
+ "requires": {
+ "deep-aplus": "^1.0.1",
+ "q": "^1.1.2"
+ }
+ },
+ "q-plus": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/q-plus/-/q-plus-0.0.8.tgz",
+ "integrity": "sha1-TMZssZvRRbQ+nhtUAjYUI3e2Hqs=",
+ "requires": {
+ "q": "^1.1.2"
+ }
+ },
+ "qs": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+ "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
+ },
+ "randomatic": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
+ "integrity": "sha1-t3bvxZN1mE42xTey9RofCv8Noe0=",
+ "requires": {
+ "is-number": "^4.0.0",
+ "kind-of": "^6.0.0",
+ "math-random": "^1.0.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+ }
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ }
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=",
+ "requires": {
+ "is-equal-shallow": "^0.1.3"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4="
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "request": {
+ "version": "2.81.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+ "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
+ "requires": {
+ "aws-sign2": "~0.6.0",
+ "aws4": "^1.2.1",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.0",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.1.1",
+ "har-validator": "~4.2.1",
+ "hawk": "~3.1.3",
+ "http-signature": "~1.1.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.7",
+ "oauth-sign": "~0.8.1",
+ "performance-now": "^0.2.0",
+ "qs": "~6.4.0",
+ "safe-buffer": "^5.0.1",
+ "stringstream": "~0.0.4",
+ "tough-cookie": "~2.3.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.0.0"
+ }
+ },
+ "request-progress": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
+ "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
+ "requires": {
+ "throttleit": "^1.0.0"
+ }
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w="
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "requires": {
+ "align-text": "^0.1.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=",
+ "optional": true
+ },
+ "send": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=",
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.0",
+ "statuses": "~1.4.0"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY="
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic="
+ }
+ }
+ },
+ "serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+ "requires": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ }
+ },
+ "set-value": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY="
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
+ "requires": {
+ "kind-of": "^3.2.0"
+ }
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "requires": {
+ "hoek": "2.x.x"
+ }
+ },
+ "source-map": {
+ "version": "0.1.43",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=",
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
+ },
+ "split": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
+ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
+ "requires": {
+ "through": "2"
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ },
+ "sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=",
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "stack-chain": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-2.0.0.tgz",
+ "integrity": "sha1-1z0Rcq+JVl8HQ4tbzAhoMbZomy0=",
+ "optional": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
+ },
+ "stream-combiner": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
+ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "requires": {
+ "duplexer": "~0.1.1"
+ }
+ },
+ "stream-equal": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/stream-equal/-/stream-equal-0.1.13.tgz",
+ "integrity": "sha1-F8LXz43lVw0P+5njpRQqWMdrxK4=",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
+ "integrity": "sha1-eIAiWw1K0Q4wkn0Weh1vL9OzOnI="
+ },
+ "svgexport": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/svgexport/-/svgexport-0.3.2.tgz",
+ "integrity": "sha1-ci8xhAMotIPopdyqc+/4GNiE0QY=",
+ "requires": {
+ "async": "^1.0.0",
+ "phantomjs-prebuilt": "^2.1.4"
+ }
+ },
+ "symbol-tree": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
+ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
+ "optional": true
+ },
+ "throttleit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
+ "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw="
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+ },
+ "tmp": {
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
+ "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
+ "requires": {
+ "os-tmpdir": "~1.0.1"
+ }
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ }
+ }
+ },
+ "tough-cookie": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+ "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=",
+ "requires": {
+ "punycode": "^1.4.1"
+ }
+ },
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "optional": true
+ },
+ "trace": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/trace/-/trace-3.1.1.tgz",
+ "integrity": "sha1-Bh7r8BKAVhHLAhOEQLxxaXmw6xE=",
+ "optional": true,
+ "requires": {
+ "stack-chain": "^2.0.0"
+ }
+ },
+ "trace-and-clarify-if-possible": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/trace-and-clarify-if-possible/-/trace-and-clarify-if-possible-1.0.5.tgz",
+ "integrity": "sha1-b62AJfacRHbqdNmsYZhE8fEFE7s=",
+ "requires": {
+ "clarify": "^2.1.0",
+ "trace": "^3.1.1"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "optional": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "requires": {
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "optional": true
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^0.4.3"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.1",
+ "to-object-path": "^0.3.0"
+ }
+ }
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ },
+ "unix-crypt-td-js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.0.0.tgz",
+ "integrity": "sha1-HAgkFQSBvHoB1J6Y8exmjYJBLzs="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "upath": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.1.tgz",
+ "integrity": "sha1-SX98EJCwgY8xC7+wZ4NYamjSgBQ="
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8="
+ },
+ "user-home": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
+ "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=",
+ "requires": {
+ "os-homedir": "^1.0.0"
+ }
+ },
+ "utf8-bytes": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/utf8-bytes/-/utf8-bytes-0.0.1.tgz",
+ "integrity": "sha1-EWsCVEjJtQAIHN+/H01sbDfYg30="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ }
+ }
+ },
+ "webidl-conversions": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz",
+ "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=",
+ "optional": true
+ },
+ "websocket-driver": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
+ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+ "requires": {
+ "http-parser-js": ">=0.4.0",
+ "websocket-extensions": ">=0.1.1"
+ }
+ },
+ "websocket-extensions": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+ "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk="
+ },
+ "whatwg-url-compat": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz",
+ "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=",
+ "optional": true,
+ "requires": {
+ "tr46": "~0.0.1"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "xml-name-validator": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
+ "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=",
+ "optional": true
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "requires": {
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "window-size": "0.1.0"
+ }
+ },
+ "yauzl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
+ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+ "requires": {
+ "fd-slicer": "~1.0.1"
+ }
+ }
+ }
+}
+{
+ "name": "documentation",
+ "version": "5.6.0",
+ "description": "Mojaloop Documentation GitBook Project",
+ "dependencies": {
+ "gitbook-cli": "^2.3.2",
+ "gitbook-plugin-back-to-top-button": "^0.1.4",
+ "gitbook-plugin-collapsible-chapters": "^0.1.8",
+ "gitbook-plugin-editlink": "^1.0.2",
+ "gitbook-plugin-include": "^0.1.0",
+ "gitbook-plugin-insert-logo": "^0.1.5",
+ "gitbook-plugin-swagger": "^0.2.0",
+ "gitbook-plugin-theme-api": "^1.1.2",
+ "gitbook-plugin-uml": "^1.0.1",
+ "gitbook-plugin-variables": "^1.1.0",
+ "svgexport": "^0.3.2"
+ },
+ "devDependencies": {},
+ "scripts": {
+ "run": "npm run gitbook:serve",
+ "gitbook:install": "gitbook install",
+ "gitbook:serve": "gitbook serve --port 8989",
+ "gitbook:export:pdf": "gitbook pdf ./",
+ "docker:build": "docker build --no-cache -t mojaloop/documentation .",
+ "docker:push": "docker push mojaloop/documentation",
+ "docker:run": "docker run --rm -it --name mojadoc -p 8989:8989 mojaloop/documentation"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/mojaloop/documentation.git"
+ },
+ "author": "",
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/mojaloop/documentation/issues"
+ },
+ "homepage": "https://github.com/mojaloop/documentation#readme"
+}
+
+
+
+
+
+
+ Helm · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+The purpose of this document is to provide;
+
+an overview of the current helm charts,
+the hierarchy relationship between the charts,
+the hierarchy of values.
+
+Helm Chart Overview
+
+Helm Chart Repo: http://mojaloop.io/helm/repo
+Helm Github: http://github.com/mojaloop/helm
+
+
+Helm Hierarchy Relationship
+
+Helm Hierarchy of Values
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Helm","level":"1.6.1","depth":2,"next":{"title":"Project","level":"1.6.2","depth":2,"path":"repositories/project.md","ref":"repositories/project.md","articles":[]},"previous":{"title":"Repo Details","level":"1.6","depth":1,"path":"repositories/README.md","ref":"repositories/README.md","articles":[{"title":"Helm","level":"1.6.1","depth":2,"path":"repositories/helm.md","ref":"repositories/helm.md","articles":[]},{"title":"Project","level":"1.6.2","depth":2,"path":"repositories/project.md","ref":"repositories/project.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"repositories/helm.md","mtime":"2019-03-08T16:50:49.930Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+The Mojaloop project is organized on the basis of component microservices. As such, there are over twenty different repositories in GitHub that align to the different services. The following four repositories are pinned to the project:
+
+The mojaloop repository contains the master readme file along with the following documents to get started.
+The documentation repository documents the contributors guidelines, overall architecture, component design, message flow, and an overview of Mojaloop.
+The project repository is the central repository to track product development issues for the Mojaloop project.
+The mojaloop-specificiation contains the specification document set of the Open API for Financial Service Provider Interoperability.
+
+Individual repositories in the Mojaloop GitHub organization each describe component-specific details including source and APIs.
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"description":"Repository overview","title":"Repo Details","level":"1.6","depth":1,"next":{"title":"Helm","level":"1.6.1","depth":2,"path":"repositories/helm.md","ref":"repositories/helm.md","articles":[]},"previous":{"title":"ALS Oracle","level":"1.5.2","depth":2,"path":"api/als-oracle-api-specification.md","ref":"api/als-oracle-api-specification.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"repositories/README.md","mtime":"2019-03-05T16:37:38.694Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Project · GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Overview
+
+
+
+
+
+
+
+
+
+
+
+
+ Contributors Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Deployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standards
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versioning
+
+
+
+
+
+
+
+
+
+
+
+
+ Creating new Features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tools and Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pragmatic REST
+
+
+
+
+
+
+
+
+
+
+
+
+ Code Quality Metrics
+
+
+
+
+
+
+
+
+
+
+
+
+ Automated Testing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ Documentation Style Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequently Asked Questions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Core Scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ Level One Principles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Technical Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Hub
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Ledger Services
+
+
+
+
+
+
+
+
+
+
+
+
+ Account-Lookup Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Central-Settlements Service
+
+
+
+
+
+
+
+
+
+
+
+
+ Fraud Services
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ APIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop
+
+
+
+
+
+
+
+
+
+
+
+
+ ALS Oracle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repo Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Helm
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mojaloop Roadmap
+
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Published with GitBook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Project
+Overview
+The project repository is the central repository to track product development issues for the Mojaloop project.
+
+All work is tracked in GitHub and assigned to specific milestones.
+To review open work items go to: https://github.com/mojaloop/project/issues
+To jump and get started, review any stories that are tagged with "good first issue"
+To file a new bug or feature request, follow the templates below.
+We also use "Zenhub" a GitHub plug-in to visualize the stories and associated swim lanes.
+
+Templates
+
+Feature Request Template
+Bug Report Template
+
+
+
+
+
+
+
+
+
+ results matching ""
+
+
+
+
+
+ No results matching ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var gitbook = gitbook || [];
+ gitbook.push(function() {
+ gitbook.page.hasChanged({"page":{"title":"Project","level":"1.6.2","depth":2,"next":{"title":"Mojaloop Roadmap","level":"1.7","depth":1,"path":"mojaloop-roadmap.md","ref":"mojaloop-roadmap.md","articles":[]},"previous":{"title":"Helm","level":"1.6.1","depth":2,"path":"repositories/helm.md","ref":"repositories/helm.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"3.x.x","theme":"default","variables":{"importedVars":{"mojaloop":{"spec":{"version":"v1.0","uri":{"doc":"https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf","api":"https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml"}}}}},"plugins":["swagger","editlink","include","insert-logo","uml","collapsible-chapters","back-to-top-button","theme-api","variables","livereload"],"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":true,"base":"https://github.com/mojaloop/documentation/edit/master"},"livereload":{},"theme-gestalt":{"logo":"http://mojaloop.io/images/logo.png","favicon":"http://mojaloop.io/images/logo.png","baseUrl":null,"excludeDefaultStyles":false,"doNotHideChildrenChapters":false},"include":{},"search":{},"graphviz-and-plant-uml":{"Render":"PlantUMLServer","Server":"http://www.plantuml.com/plantuml"},"collapsible-chapters":{},"swagger":{"file":""},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"uml":{"format":"svg"},"theme-api":{"languages":[],"split":true,"theme":"dark"},"back-to-top-button":{},"variables":{"files":{"importedVars":"book_variables.yml"}},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"insert-logo":{"style":"background: none; max-height: 140px; max-width: 140px;","url":"http://mojaloop.io/images/logo.png"}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"repositories/project.md","mtime":"2019-03-08T16:40:39.002Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-11T17:31:31.950Z"},"basePath":"..","book":{"language":""}});
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{"index":{"version":"0.5.12","fields":[{"name":"title","boost":10},{"name":"keywords","boost":15},{"name":"body","boost":1}],"ref":"url","documentStore":{"store":{"./":["(dfsps)","access","adapt","address","another.","applic","bank","banks,","basic","behind","besid","between","blueprint","both","bridg","build","central","clear","client","code","commerci","competit","complet","connect","control","cost","countries.","country'","country,","creat","custom","customers,","develop","dfsp","digit","digital,","doesn't","don't","drive","economy.","enabl","enforc","establish","even","everyon","exampl","exist","fees.","financi","flow","fraud","given","goal","govern","help","host","hous","hub","idea","ident","implement","inclus","individu","institut","intent","interfac","interoper","isol","issu","itself,","key","ledger,","lookup,","low","management,","mani","market.","maxim","merchants,","model","mojaloop","money","monopoli","move","multipl","nation","need","network","network.","new","offic","on","open","opportun","order","out","overview","payment","peopl","platform","players.","poor","possibl","power","product","project","provid","providers,","receiv","rules.","scale.","scheme","seamless,","send","servic","set","sever","show","shut","side","similar","singl","softwar","software.","sourc","specifically,","standard","straightforward","subnetworks.","system","system,","system.","technolog","through","togeth","transact","up","us","users,","want","ways:","work"],"contributors-guide/":["\"good","'mojaloop","(and","(ilp)","(the","*","2.0","4.0","addition,","advantag","agenc","already,","alway","announc","anyth","apach","architectur","ask","assign","assist","assur","back","backlog","banks,","becom","board","broken","bug","bug.","bugs,","bugs.","business,","cc","central","chanc","checkout","clear","clone","code","code.","common","commun","community.","complianc","connect","contain","contribut","contribute?","contributor","cost","counter","credit","current","customer'","date","defer","deploy","develop","developers,","developers.","dfsp","differ","disappear","discuss","document","documentation.wher","don't","done,","down","driven.","each","ecosystem.","enabl","encouraged!)","enhancements.","epic","epics.","exampl","exist","familiar","faq","feedback?","financi","find","first","fix","fixes,","fraud","free","fulfillment,","futur","gathering.","gener","general,","github.","good","govern","guid","help","help?","here","hold","hub","identifi","ilp,","implement","incur","individu","inform","initi","integr","interest","interledg","issu","issue\".","join","lack","larger","latest","layer.","licens","license.","link","look","main","management.","mark","meant","middl","minim","mobil","mojaloop","mojaloop.","money","money).","money.","multipl","nd","needed?","net","new","offices,","on.","onboard","open","oper","opportun","order,","organ","other","out","overview","owner","part","parti","particip","payment","peopl","person","phase","product","project","project.","protocol","provid","provider,","provider.","providers.","publish","qualiti","questions,","quoting,","receiv","relat","releas","release.","release?","replac","report","repositories,","requir","review","risk","roadmap","rules,","run","scheme.","secur","see","send","server","servic","set","settl","settlement,","share","show","simpl","slack","slack.","someon","someone'","specialist","specif","specification'","standard","start","stori","stories,","stories.","suit","switch","system","take","target","team","that'","there'","thing","those","though","three","togeth","track","transact","tri","type","typic","under","union","up","update:","us","view","wallet","want","what'","with.","work","works,","write","you'll","you."],"contributors-guide/mojaloop-deployment/":["##","&","&&","'v5.1.1'","'vmx|svm'","(a","(altern","(high","(i.e.","(optional)","(tail/follow)","*note","*recommend","/ect/host","/opt","/opt/postman/postman","/proc/cpuinfo","/usr/bin/postman","/usr/local/bin/minikub","1","1.","1.1","1.2","127.0.0.1","16gb","2","2.1","2.1.1","2.1.2","2.2","2.2.1","2.3","2.3.1","2.4","3x","4","40gb","4x","8.0","[https://docs.docker.com/install](https://docs.docker.com/install)","[https://docs.helm.sh/using_helm/#instal","[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)","[https://kubernetes.io/doc/tasks/tools/instal","[https://www.getpostman.com/apps](https://www.getpostman.com/apps)","___","```","```http","`brew","`central","`kubectl","`kubetail","`sudo","above.","access","adapt","adapter.loc","adapter/health","add","address","advanc","aggreg","alloc","alreadi","altern","alway","amd","amd64","api","api's.","appli","applic","apt","architecture.","attempt","authent","avail","availability)","available.","background","balanc","barr","bash","befor","being:","below","below.","below;","between","bios.","box","browser","browser.","btbwf","btbwf}","by:","c","central","central.centralledger.centralledg","central_ledg","centralledg","chang","chart","chart(s)","chart.","charts.","check","chrome","classic`","cli","cli`","click","client","cluster","cluster.","collection,","color","command","command.","complet","complex","compon","comprehens","comput","computer’","concept","concluded.","config","configmap","configur","confirm","construct","context","context;","contexts;","continu","control","correct","cpu","creat","curl","current","daemonset","dashboard","dashboard)","dashboard.yaml","dashboard:/proxy/#!/","dashboard;","default","define,","del","delet","delete,","demo","demo`","depend","deploy","deployment.","deployment;","describ","descript","desktop","directli","directori","directory.loc","docker","docker,","docker.","document","documentation,","download","driver","driver=kvm","dure","each","eg.","egrep","empty:","enabl","end","engin","environ","environment,","err_name_not_resolved`","error","etcd","even","exampl","execut","extern","f","f`","familiar","file","follow","forens","found.","friendli","full","futur","gener","gib","go","good","googl","grep","gui","guid","guide)","guide/hardware.html","guidelin","ha","health","helm","helm)","helm:","helm](https://docs.helm.sh/using_helm/#instal","helm`","help","helper","here","http","http://central","http://localhost:8001/api/v1/namespaces/kub","http://ml","http://mojaloop.io/helm/repo/","http://storage.googleapis.com/kubernet","https://coreos.com/etcd/docs/latest/op","https://dl.pstmn.io/download/latest/linux64","https://forums.docker.com/","https://github.com/johanhaleby/kubetail","https://kubernetes.io/docs/setup/clust","https://kubernetes.io/docs/tasks/tools/instal","https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernet","https://raw.githubusercontent.com/mojaloop/postman/master/environments/mojalooplocal.postman_environment.json","https://raw.githubusercontent.com/mojaloop/postman/master/mojaloop.postman_collection.json","https://storage.googleapis.com/minikube/releases/latest/minikub","hub.loc","hypervisor,","hypervisor:","icon","imper","import","important:","includ","increas","incub","incubator.","info","inform","infrastructur","infrastructure,","ingress","init","instal","installed.","instructions:","insur","interact","interop","introduct","ip","k8","kms.local","kube","kubectl","kubectl)","kubectl,","kubectx","kubectx`","kuberctl](https://kubernetes.io/docs/tasks/tools/instal","kubernet","kubernetes.","kubetail","kvm","large/#s","last","ledger","ledger.loc","ledger/health","ledger’","let","line","link","linux","linux(ubuntu)","list","list,","listed,","ln","lo","load","local","log","look","lunch","mac","mac.","mac:","make","manag","master","memori","minikub","minikube/","minimum","ml","moja","moja.*","mojaloop","mojaloop.postman_collection.json","mojaloop/centralledg","mojaloop/mojaloop","mojalooplocal.postman_environment.json","more","multipl","n","name","name.","name=moja","namespac","namespace=demo","namespace=kub","navig","need","new","nginx","node","node)","node):","nodes,","non","note","note:","now","o","on","onc","open","option","optional(us","output","overview.","part","per","persist","place","plane","plane:","pleas","please,","po","pod","pods.","postman","postman.tar.gz","prefer","present","previou","proceeding,","process","process.","project","project.","provid","proxi","public","purg","purpos","ram,","read","reader","receiv","recommend","refer","registry.loc","relationship","replicaset","repo","repo=http://mojaloop.io/helm/repo","repositori","repository:","repro","request","requir","required/opt","requirements:","resolv","resourc","responces.","responses.","retriev","returned,","review","rm","roles,","run","run:","running:","s","same","scale","script","secret","secrets/kubernet","section","see","select","send","server","servic","services.containers.api.image.tag=v5.1.1","set","settlements.loc","setup","setup:","shown","sidecar.loc","singl","size:","snap","snapshot","softwar","specif","stable/nginx","start","started,","startup","statefulset","statu","step","step.","storag","stream.","strongli","successfulli","sudo","sudo.","sure","switch.loc","system","system/services/https:kubernet","tab.","tar","task.","tbc","terminal;","test","testing,","through","tick","tiller","tiller...","to;","token","token,","token.","tool","tool)","tools.","ubuntu","ubuntu:","ui","under","underli","understand","up","updat","upgrad","uri","us","usag","user","util","v","valid","value.","variables.","vcpus,","verifi","verify,","version","version;","via","view","virtual","virtualbox","virtualbox.","vm","volumes/storage.","vt","wait","wget","window.","within","worker","x","xzf","yaml","you'll","yourself","{kubernet","|","|grep"],"contributors-guide/mojaloop-deployment/current-versions.html":["2019,","6th","activ","ad","adapter:","api","below","bug","central","chang","core","current","email","event","feature/function","fix","helm:","ledger:","made","march","ml","new","notifier:","processor:","releas","repositori","servic","settlement:","signific","such","v5.2.0","v5.2.1","v5.3.0","version"],"contributors-guide/standards/":["'mode","(code","(stories)","(to","/","action","adopt","align","ask","assess","base","basic","both","branch","chang","change.","check","ci/cd","code","conduct","configur","contribut","creat","da","deni","design","develop","document","enabl","ensur","etc,","featur","gener","github","good","guidelin","idea","impact","includ","inform","it'","item","l1p","level","levelon","licens","line","look","major","make","mojaloop","mojaloop.","naming,","new","on","open","operation'","organ","oss)","perform","pipelin","polici","portabl","prerequisit","principl","principles,","privat","process","provid","pull","reason","regard","remove/sanit","repo","repositories.","request","review","see","slack.","sourc","specifications)","standard","start","statu","sub","submit","sure","take","team","updat","us","version","violat"],"contributors-guide/standards/versioning.html":["(features,","(of","(pi)","4)","4.4","5.","5.1,","anyway,","base","bring","bug","chang","change,","configur","core","correspond","current","currrent","custom","date","depict","document","done","dure","exampl","example,","first","fixes).","found","four","fourth","guidelin","helm","here.","however,","impli","increment","inform","inspir","latest","made","mojaloop","necessit","need","new","note","number","on","open","pi","program","project,","provid","regard","releas","releases.","repo","repositori","repository.","repres","semant","servic","services.","sourc","specif","sprint","sprint5.1","strategi","switch","system","timelin","up","us","v4.4.4","v5.1.0","version","vx.y.z,","whenver","x","x.i","z"],"contributors-guide/standards/creating-new-features.html":["$","(e.g.","(fetch)","(not","(push)","(refer","/","abov","activ","add","approval,","attain","b","back","backup","branch","branch.","branch:","branchtyp","button","camelcase.","chang","check","checkout","circieci).","clone","code","complet","contain","coverage,","creat","current","descript","development.","document","dure","ensur","etc","execut","featur","fixes.","follow","following:","fork","fork:","format","format:","git","github","hotfix","https://github.com//.git","https://github.com/mojaloop/.git","https://help.github.com/articles/fork","information)","information:","issue#","issue,","issuedescript","keep","mainten","maintenance.","master","merg","mojaloop","mojaloop'","more","new","normal","now","on","onc","origin","person","pr","pull","push","refer","releas","release.","remot","remote:","remotes:","repo","repo)","repo.","repo/","repo:","repositori","see","snapshot","space.","sync","sync.","synchronis","temporari","tests,","two","unit","upstream","urgent","us","v","valid","via"],"contributors-guide/tools-and-technologies/":["\"project","#","&","(codecov,","(dfsp).","(ideal","(pi)","(raster).","(safe)","(scalabl","(size,","(through","0.8.","2","2.0","25%","6.67/seat/month.","abil","able.","access,","accord","account","addit","administr","administration,","against","aggreg","agil","agnost","agnostic,","agnostic.","allow","along","alpin","alreadi","already,","also,","amazon","analysts.","anonymity,","apach","api","apis,","apis.","applic","applications,","applications.","approach","archi,","architects,","architectur","aren’t","attempt","author","autom","automat","avail","available.","avoid","aws,","azur","backend","backup,","base","basic","becom","befor","behind","better.","between","binari","block","blockchain","board","board.","both","bug","build","build,","built","cacoo,","call","captur","central","certain","chain","chang","changes.","channel.","check","choic","chose","chrome","chrome'","ci","circl","circleci","clarity.","cleanli","climat","climate),","closed,","cloud","cloud,","clusters,","clusters.","code","code,","code.","coding.","command","commmit","communication.","compar","compatible.","complex","complexity,","compon","comprehens","configur","configuration,","configuration.","configured,","conform","confus","connect","consid","considered,","considered.","constantli","construct","contain","containers,","continu","control","convers","convert","copi","cost","couldn’t","countries,","coverage)","coveralls,","creat","cumul","current","dactyl","daili","dashboard","data","databas","databases:","db2,","dbas.","dbeaver","deal,","debug","decis","default","defin","deliver","deliveri","demand","demo","depend","deploy","deploy,","deployment.","deployments,","derby,","design","desired.","detection,","develop","developed,","developers,","developers.","development,","development.","devop","dfsp,","diagram","diagrams,","didn’t","diff","digit","direct","directli","directory,","disadvantag","distribut","divid","doc","docker","docs,","document","document,","documentation.","documents,","documents.","don’t","draw.io","drawing,","drawings.","dropbox","each","easi","easiest","easili","editable.","editor","email.","enabl","end","enforc","engin","ensur","enterpris","entir","environ","environment.","epic","epics,","eslint","eslint),","etc.","even","exchang","execution.","extract","favorit","featur","fee","few","file","file.","final","financi","fine","fine.","firebird,","fix","flaki","flavor,","flexible.","flow","focu","font","format","formats,","four","framework","fraud","free","free)","free,","friendli","function","funds.","gave","geograph","git","git,","github","github,","github.","goal","goal.","good","googl","grade","great","group","guarante","gui","gui.","guid","harder","hardwar","hasn’t","health","helm","help","here","high","horizontally,","host","http","hub","huge","imag","immediately.","important.","in,","includ","including:","increment","infrastructur","infrastructure.","initi","installations.","instead","integr","interact","interfac","interfaces,","interledg","interledger.org","intern","internet.","issues,","issues.","it'","it,","it.","it’","javascript","javascript.","jenkin","jira","kafka","keep","kubectl","kubernet","lack","language.","larg","later","layer,","lean.","level","leverag","librari","licens","light","lightweight","lightweight,","like","limit","line","link,","links/vers","linux","linux,","linux.","local","locat","long.","look","lot","lucidchart,","m","mac","macos,","made","main","maintain","maintained,","mainten","make","manag","management\"","management,","management.","mani","manual","manual.","mariadb,","markdown","markdown,","market","master","matter","mean","meeting.","mermaid,","messag","methodolog","metric","metrics.","microservic","microservice.","microservices,","microservices.","microsoft","minimum.","model","modeling,","modern","mojallop","mojaloop","mojaloop.","mojaloop’","money","monitor","more","more.","move","ms","much","mule","multi","mysql","mysql,","mysqlworkbench","necessari","need","needed.","needs.","node","nodej","npm","number","object","offer","on","ongo","onlin","open","open,","openapi","oper","optim","oracle,","orchestr","order","origin","os","outgrew","over","overal","overhead","p1","packag","page","pandoc,","part,","particular","pattern.","pdf","pdf,","pdf.","percona","perform","person.","pesa,","phase","phone","phones.","pi","pick","picked.","pictur","pipelin","plan","plantuml,","platform","png","points,","popular","portal.","portfolio","possibl","postgresql,","postman","pragmat","pre","prefer","prem.","premis","prerequisit","present","primarili","principles.","print","process","produc","product","program","programmers,","project","project,","project.","projects.","protocol","prototype.","provid","provis","publish","purpos","push","put","qualiti","raml","raml.","rancher","raster","read","readabl","reason","recommend","record","redefin","refin","regression.","regulatori","relat","releas","reliabl","replac","report","repos.","repositori","repositories.","request","requir","requirements.","resili","resilience,","responses.","rest","restrict","result","return","review","review,","run","run.","runnabl","running.","runtim","same","save","scale","scale,","score","scripts,","secur","secure,","security,","see","send","sens","separate.","server","server,","server.","servic","service,","services—loc","set","setup","sever","share","simpl","simplifi","size","sketchboard.io,","slack","slightli","small","smart","solut","solv","sonarqub","sourc","sourcetre","sourcetree'","specif","spreadsheet","sprint","sprints,","sql","sqlite,","standard","standards.","start","state","stori","stories,","straightforward.","strategi","strong","strongli","studio","style","style.","such","support","svg","swagger","sybase,","system","system.","systems,","systems.","tabl","tables.","target","team","team.","teams.","technolog","templat","teradata,","term","test","test,","tests,","that.","therefor","third","though","thought","threat","through","throughout","thus,","time","time,","tool","tool,","tool.","tools,","tools.","top","track","track,","transfer","transport","treat","tri","two","typic","unifi","unit.","up","updat","upgraded,","us","use,","use.","used.","user","ussd","v0.8","v0.8,","v1.0","v2.0","v8","vector","vector)","veloc","veri","version","versioning,","vertic","view","viewabl","viewer.","visio,","visual","volum","vs","want","want.","wanted.","waterfal","way","web","week","weight","well.","we’d","wide","wiki","window","windows,","windows.","within","without","word","work","work.","workbench","world","written","wso2","wysiwyg","x.","zenhub","–"],"contributors-guide/tools-and-technologies/pragmatic-rest.html":["\"","\"$\"","\"\\\"","\"_\"","\"count\"","\"m\"","\"q\"","\"start\"","(a","(e.g.","(e.g.).","(hyphen)","(like","(or","(other","(repres","(represent","(tbd)","(underscore)","(where",".","/customers,","/customers/123456","/transfers,","/transfers/:id/fulfil","/transfers/:id/fulfillment).","123456.","18,","19980827,","1:","2","2.0","2.0.0,","2016.","22,","2616.7","2:","3:","4:","5789,","5:","6:","7813","7:","8601","8:","9a","[0","[3])","academ","accept","accord","account","action","actual","add","addit","adher","adopt","advanced,","advoc","allow","although","ambigu","anathema","ant","anticip","api","apis,","apis.","appli","applic","applications.","approach","assign","assist","attempt","audienc","august","automat","avoid","away;","back","band","basi","becom","befor","behind","benefici","best","better","between","big","binari","bind","bit","build","businesses,","caller","camelcas","capitalcas","card","carefulli","carri","case","cases,","caus","central","centric","chang","charact","character.","choic","chosen","clear","client","code","code.","collect","collection),","collection,","collection.","combin","commerci","common","commun","complet","complex","compli","compon","conceptu","conform","confusion.","consid","consist","consistently.","constraint","constraint:","consume,","contain","context","contract","control","controls.","controls?","convent","conventions.","correct,","cost","count","coupl","coupling,","creat","create)","creation","custom","customers.","data","date","dates.","datetim","debug","defacto","defin","define,","definit","definition:","definitions.","delet","delete.","delimit","depend","design","design).","design.","design:","determin","develop","difficult","discover,","discovery.","disdain","dissert","distribut","document","don't","doubt,","e.g.","e.g.).","e.g.,","each","easi","easier","easili","easily.","effect","efficiency,","element","elements.","else.","emerg","employ","enabl","end","endian","enterpris","entiti","envelop","envelopes.","environ","environment,","environments,","error","errors,","escap","etc).","evalu","even","event","everyone.","ex","example,","exchang","execut","exist","expiri","explain","express","extend,","extern","extra","extran","face.","fail","fascin","faults,","favor","field","fielding'","fielding.","final","find","focu","follow","form","formal","format","format.","formats,","formats.5","fowler","fowler,","framework","free","fulfil","full","fulli","function","fundamental,","further","further,","gener","genesi","give","go","goals.","group","handl","hateoa","hateoas.","header","headers.","heart","held","here","here.","highli","however,","http","http,","http://json.org/,","http://jsonpatch.com/,","http://martinfowler.com/articles/richardsonmaturitymodel.html,","http://semver.org/,","http://www.w3.org/tr/1998/not","https://tools.ietf.org/html/rfc5789,","https://www.amazon.com/gp/product/0596805829,","https://www.w3.org/protocols/rfc2616/rfc2616","hub,","human","hypermedia","ibm","id","idea","idempot","idempotent.","identifi","identifier.","identifiers.","illegible.","implement","impli","improv","includ","influenc","info","inform","input","instance,","instrumentation,","integr","interact","interconnect","interest","interfer","intern","internet","introduc","is,","isn't","iso","it.","javascript","jcl","jquery).","js","json","json,","json4","key","kind","know","known","language.","lead","leonard","level","levels,","librari","life","limit","list","littl","log","low","machin","maintain","major","major,","make","mani","manner","map","markdown","martin","massiv","match","matur","metadata","method","minor","minor,","model","modifi","mojaloop","mojaloop.","more","much","multi","name","names,","nativ","need","never","new","next","nodej","non","normal","note","noth","notion","noun","noun,","nullipot","number","number).","numer","object","object.","on","onc","oper","operations.","option","order","ordin","out","over","pan),","paramet","parochial.","pars","part","particip","participants,","particular","particularli","pass","patch","patch,","patch3","patch6).","path","path.","pattern","payment","peace.","per","perform","persist","persistent,","plural","possibl","post","practic","practice,","practice,2","pragmat","pre","precis","predefin","predict","predictable,","prefer","prefix","present","presentation,","price","primari","principl","principles,","probabl","problem","product","profil","program","project","project.","proof","propos","proscript","protocol","provid","pure","purity.","purpos","put","qcon","queri","query.","rapidli","read","read,","readabl","realli","reason","reduct","refer","referenc","referenced1","references.","reinforc","relat","release,","reli","remov","reorder","replac","report","represent","request","request.","requir","research,","resourc","resource,","resource.","respond","respons","responses.","rest","rest:","result","retriev","return","return,","rfc","richardson","risk","roman","roy","rules.","same","satisfi","scalabl","scale","scale,","scenarios.","schema","scheme","scope","search","sec10.html","see.","seem","segment","select","semant","semver","sense.","separ","server","server.","servic","set","set,","shifted.","side","singl","singular","slightli","snake_cas","snake_case.","sourc","space","spec)","specif","specifi","specified.","spread","sql","sql,","standard","standard,","standards,","start","state","state.","strategi","strict","structur","subset","success","suffix","summar","support","symbols.","syntax","system","systems,","take","talk.","tangibl","target","technolog","test","them,","them.","theoret","time","times.","tool","tradit","transfer)","transfer.","translat","translations,","trigger","under","underlin","underscor","understand","understanding,","uniqu","unless","updat","uri","uri.","uris,","uris.","us","users.","util","valu","values,","variabl","verb","verbs.","veri","version","version,","version.","versioning.","versioning8","visibl","visual","vm","w3c","way","way.","ways.","web","well","well,","whether","whole","wide","wire","within","without","work","write","written","xml","xml,","xml.","xsd","z].","za","{tbd"],"contributors-guide/tools-and-technologies/code-quality-metrics.html":["80%",">=","accept","ad","block","call","code","combin","complex","complexity/method","compon","component,","components.","consum","contract","cover","coverag","depend","dependencies/method","don't","easi","end","enforc","error","error.","exist","extern","fast","function","handl","help","high","integr","isn't","isol","limit","low","maintain","maintain.","make","messag","metric","need","new","on","over","pair","per","project","qualiti","readabl","real","responsibility.","run","same","scenarios.","show","singl","speed","states.","system","team","test","test.","testabl","tests.","therefor","time.","typic","unit","unit,","us","veri","way","well"],"contributors-guide/tools-and-technologies/automated-testing.html":["along","autom","describ","framework.","page","philosophi","regress","test"],"contributors-guide/documentation/":["\"documentation\"","add","appropri","busi","checkstyle.cod","code","confirm","consist","consum","content","contributor","date.","details:","discuss","document","easili","ensur","follow","format","forward","gitbook","guid","guidelines.","here.","https://www.gitbook.com/mojaloop","include:","inform","instal","java","kept","metric","mojaloop","new","nodej","npm","on:","overview","overview:","package.json.","page","project","provid","qualiti","readabl","reason","relev","repositori","repository.","set","sever","standard","style","summari","support","sync'","throughout","up","valu"],"contributors-guide/documentation/api-documentation.html":["\"c","\"documentation\"","\"prepar","\"project,\"","(#","(####)","(###)","(##)).","(built","(not",")","1","2","api","architectur","begin","component,","comprehens","config","contain","content","correspond","dactyl","document","don't","endpoint","etc","example,","example:","file)","fulfill\"","fulfill\",","guidelines.md)","guidelines](architectur","h2","h3","h4","head","header","headings.","includ","instead","interface.","interfaces,","introduc","languag","list","make","mani","match","methods,","microservice,","noun","number","order","pdf","prepar","procedur","project;","provid","raml","retriev","section","see","specif","step","steps.","subsect","such","sure","swagger,","tabl","tag","us","word"],"contributors-guide/documentation/documentation-style-guide.html":["\"completed.\"","\"in","\"pending,\"","\"to.\"","$100,000","%).","&","($)","(&)","(2","(agra),","(asterisk)","(brazzaville,","(dagger)","(don't","(doubl","(e.g.,","(footnotes,","(global","(i","(i.e.,","(includ","(india)","(ing","(it'","(like","(not","(section","(semicolon","(the","(u.s.).","(unit","(unless","(year)","*","**","+1.206.709.3100","+91.11.4100.3100",".45","011","10","10,","10.","13","1st","2004","2007)._","25","2nd","3rd","44","4th","5","5th","6","6th","76","7th","8th","=","abbrevi","abbreviation.","abrupt","accept","acceptable.","access","accord","account","accounts—mor","acronym","add","addit","address","adject","adjective.","adopt","afford","africa","ag","again","agra","allianc","alon","alone.","alway","ambigu","american.","amount","ampersand","and.","annan,","apart","apostroph","appear","approv","area","areas.).","asid","asset","associ","assum","asterisks)","attend","attent","author","avail","avoid","bed","befor","begin","below.","between","beyond","bill","bill,","billion.","bill—not","bmgf.","board","bold","bolded,","both","brief","buffett","buffett).","building.","built","bullet","call","capit","caption","caption,","caption.","careful.","case","cases,","catch","center.","certain","chair","chairman","chang","chicago","children,","chinese,","circul","citat","city,","clarifi","clear.","clinic","close","club","co","code,","colleg","colon","colon.","colons,","colorado,","come","comma","commas)","commas,","comment","comment!)","commun","community.","compani","complet","congo,","conjunct","connect","construct","contact","contain","content","context","convent","conventions.","coordin","copyright","countri","countries.","country,","creat","credit","dagger)","daggers)","dash","dash.","dashes—thos","decim","decis","deliveri","depart","depend","describ","desk.","develop","development,","dialogu","differ","distanc","distract","do","do,","do:","doctor","document","document.","documentation,","documents,","documents.","doesn't","dollar","dollars,","don't","done","doubl","dozen","drug","each","econom","edit","election,","email:","en","endnotes)","endnotes,","endow","enhanc","entiti","entri","even","event.","everyon","exact","exampl","example,","example:","examples.","examples:","except","exception:","exceptions.","explain","extern","famili","family'","fast","featur","few","field","figur","figures,","final","financi","fine","first","focus.","follow","follows:","footnot","footnotes,","ford","form","formal","foundat","foundation'","foundation,","foundation.","foundation:","four","fractions).","fractions—ref","frances.","free","frequent","fs","full","gate","gates","gates'","gates,","gates.","gateses'","gateses.","gave","gd,","gener","gerund","gh,","global","go","graduat","grammat","grant","grant.","grantmaking.","grantmaking:","green","guid","guidelin","h.","happen","hard","head","headline.","headquart","health","health,","help","http://","hyphen","hyphen,","hyphen.","hyphens.","hyphens—compound","ident","identifi","idiomatic,","iii","illustr","imag","image,","immedi","inappropri","includ","increas","increasingli","indic","individual'","inform","instanc","instance:","instead","intend","intern","internet","introduc","introductori","investments”","ironic,","issu","it'","it.","italic","item","johnson","jointly.","know","known","kofi","kyle","languag","languages,","latest","law","layout.","lead","leader","legal","legislature,","less","librari","licens","like.","limit","line.","link","list","list.","lists.","liter","look","lowercas","lowercase,","lowercase.","make","manag","manual","mark","marks?","materi","materials,","mean","meaning,","meaning.","meant","media","media,","melinda","melinda,","melinda.","member","mention","million","misused.","modified.","modifiers,","mojaloop","month.","more","mr.","multipl","m—to","nairobi","name","name.","near","need","needlessli","net:","never","new","nicknam","nongovernmental:","nonprofit:","not?","note","noth","notic","noun.","number","number.","numbers,","numer","numeral.","n—with","obviou","offic","office.","often,","old","omit","on","on).","open","or.","order","out","out,","over.","overall.","own","owned.","parallel","parallelism,","parenthes","parentheses.","parenthet","part","part.","peopl","people,","percent","percentag","percentages,","period","periods)","periods,","person","person'","phase","phase.","phone","photo","photo'","photograph","photographer.","phrase","phrase.","phrases,","placement","places.","plain","plu","plural","plural:","point.","portion","possessive:","possibl","possible,","possible.","postsecondary:","poverti","poverty.","preced","prefix","prepar","presidenti","press","print","produc","program","program),","program,","program.","program:","programs:","program…","progress,\"","proper","provid","public","publications,","publications.","punctuat","punctuation,","purchas","question","question.","quot","quotat","quotes—quot","ranges.","reader'","real","received.","recent","refer","reference.","regist","relat","remarks.","requirements,","reserved.","revis","revolut","right","rippl","roman","rule","rule.","s.","safe,","salmonella","same","save","scare","scientif","seattl","second","section","see","semicolons.","sentenc","sentence,","sentence.","sentences.","separ","seri","serial","servic","services—particularli","set","sever","shown","sign)","sign.","signs)","similar).","singl","site","slightli","smiling,","someth","sources.","space","speak","specialized,","specif","specifi","speech","spell","spelling:","sponsor","spring.","sr.","sr.,","staff","stand","standing,","state","state:","statement.","states)","states).","states,","states.","string","strings)","structur","style","style.","stylebook.","subhead","subject","subsequ","suffixes,","superscript","sure","symbols:","system","taken","team","technic","term","that,","thereafter.","they'r","thing.","this,","those","thought.","three","throughout","titl","to\"","to,","trademark","translat","travel","trial","trump","trust","trust.","ts","two","typhi","typic","u.s.","unavail","uncertain,","under","understand","understanding.","unit","univers","university,","unless","updat","url","us","usag","use,","using,","usp","vaccin","valid","verb","verb)","veri","version","visit","visits.","voted.","warren","washington","way.","way:","ways.)","web","website:","well","went","what'","whenev","wide","width","william","without","word","word,","words,","wordy.","work","work.","world","world,","write","www.gatesfoundation.org","year","year.","years.","you'r","§","§§","©","“program","†","††","‡","‡‡","…"],"contributors-guide/frequently-asked-questions.html":["2.0","account","accounts,","achiev","adapt","against","aim","allow","amazon","apach","apis.","appealing.","applic","ask","associations,","avail","azure.","bank","bankers,","banks,","behind","benefit","between","build","built","central","challeng","check","choreograph","cloud","code","code,","collabor","commerci","commiss","commonli","compani","companies:","compli","compon","comput","connect","consist","contribut","core","cost","countri","country,","creat","crosslak","crowd","current","custom","customers,","depend","deploy","design","develop","developers,","dfsp","differ","digit","directli","directori","docker","document","dwolla,","each","easi","easili","econom","end","entrepreneurs,","environ","environments.","everyon","everyth","example:","exist?","expertis","explor","field","financi","fintech","for?","foundat","foundation'","fraud.","free","frequent","full","function","function:","gate","gateway.","go","group","group,","guid","hardwar","help","idea","identifi","implement","import","improv","includ","inclus","indirectli","innovative,","ins.","install.","instant","integr","interledg","intern","interoper","introduc","investments.","invit","irrevocable;","it?","java","kind","layer","layer,","layers,","lead","ledger","level","licens","license.","link","local","loop;","low","lower","major","make","mani","market","market.","markets.","meant","merchant","method","methods,","microservic","mobil","model","modern","modifi","modules,","modusbox","mojaloop","mojaloop,","mojaloop.","mojaloop?","money","mulece,","nation","navig","network","networks,","new","node.js,","offering,","on.","on?","onboard","ones,","open","other","other.","outdat","own.","packag","paper","part","partner","payment","platform","platform.","platforms,","play","poor.","postgresql.","practic","prevent","primari","problem.","process","processor","product","propos","protect","protocol","provid","providers,","providers.","public","question","r&d","rais","reach","realli","recommend","regardless","regulators.","reli","resourc","ripple,","roadmap","roadmap,","roadmap.","rout","run","sampl","scale,","scale.","secur","segreg","serv","servic","settlement","setup","side","softwar","software,","software.","sourc","source?","specif","speed","standard","start","startup","support","supported?","switchboard,","system","team","team.","tech","technologies.","they'r","three","thu","transact","transaction;","transfers.","tri","under","understand","univers","up","updat","us","users.","version","viabl","wallets,","ways:","web","whatev","white","who'","whole","wide","without","work","work?","world'","yes."],"mojaloop-background/":["&","2","2.0","acceler","adapt","address","anyon","apach","avail","background","benefit","bill","billion","build","code","companies:","cornerston","cost","could.","crosslak","custom","design","develop","digit","dwolla,","everyth","fast","financi","fintech","form","forth","foundation'","foundation,","foundation.","free","fund","gap","gate","grew","group","grow","help","implement","includ","inclusion,","industri","inform","initi","innov","innovative,","keep","lack","larger","lead","level","leveloneproject.org.","license.","low","make","market","mean","melinda","mobil","modusbox,","mojaloop","more","new","now","on","open","out","own,","own.","platform,","poor","possibl","principl","progress.","project,","project.","provid","rais","reach","ripple,","servic","services.","set","share","softwar","sourc","support","system","team","tech","technolog","technologies.","though,","ti","unbanked.","under","us","visit","won't","world'"],"mojaloop-background/core-scenarios.html":["'freeze'","(which","***","1.5","25","25.","250","30","32","5,000","abil","account","account.","accounts.","acquir","activ","add","addit","addition,","address","africa","again","ago,","agre","ahead","alert","allow","along","alreadi","although","amount","and,","anomalies.","anyon","anytim","approach","appropri","approv","approval.","asid","ask","assign","associ","attend","attent","auditor","author","automat","avail","babi","balanc","balance.","bank","barter","basi","basis.","befor","birthdat","blacklist","blacklist.","both","bought","bring","brother,","bulk","busi","button","buy","call","can't","carri","case","cash","chang","check","child","children","children.","circumstances.","clicks.","co","come","comment","common","compani","company.","complet","confirm","contact","continu","core","corral","count","counts.","coupl","cow","creat","custom","customer'","customer.","daili","date","day","day.","decid","deeper","default","deni","deposit","descript","devic","device.","differ","directli","distribut","does,","don't","doubl","each","easi","easier","easili","educ","education.","elder","emergencies,","employ","employe","employees,","enough","ensur","enter","error","even","everyone'","exce","exchang","expens","expenses.","explain","fair","famili","family.","farm","fee","feel","field.","final","financi","first","fix","flag","flip","follow","food","food.","fraud","fraudul","friend","fund","funds.","further","further.","futur","get","glad","go","goat","goe","good","greater","half","hamim","hamin","hand","handl","happi","head","health","healthi","help","here","high","him.","hold","home","hour","hourli","id","id,","id.","illeg","improve.","includ","include:","incom","increas","indic","individu","inform","ingredi","inspect","instantaneously,","invalid","investig","investigate,","investigation.","invoic","involv","issu","it.","item","jahari","jahari.","job","johannesburg","juggl","kampala,","kani","kani'","kani.","keep","kick","kilogram","know","larg","largest","last","left","level","line","line.","live","local","long","longer","look","lost","lot","low","machin","made","made.","make","manag","mani","manual","manufactur","market","market.","marri","match","mean","meantim","meat","medic","meet","member","member.","menu","merchant","messag","mobil","mojaloop","money","money.","monitor","monitor,","month","more","morn","much","mwallet","name","name,","nation","need","needs.","network,","never","new","next","nikisha","normal","northern","notic","notifi","now","number","number.","numbers,","oldest","on","onc","open","order","out","out.","outgo","over","own","owner","paid","paid.","part","particular","path","pay","paycheck","payment","payment.","payments.","pend","perform","period","person","phone","phone.","phones,","pick","pin","place","plantain","plantains.","pleas","plenti","po","point","poor","potenti","prefer.","price,","price.","primari","print","process","profici","prompt","provid","providers.","pull","purchas","push","quickli","rang","rate","re","read","readi","reading,","realli","reason","receipt","receiv","recent","record","reduc","reli","remot","remov","report","report.","restaur","retriev","revers","review","risk","room","rule","safe","sale","salem","salem'","same","scenario","scenarios,","screen","search","seconds,","secur","see","seem","seller","send","sent","separ","servic","set","setup","setup.","sever","share.","she'","shill","shop","show","signatori","simpl","simpli","sling.","small","softwar","someon","son","son.","sourc","southern","specif","specifically,","spend","staff","start","started.","steps.","still","stop","store.","supervisor","sure","suspect","suspici","system","system,","tadeo","take","taken","technolog","tell","text","thank","them.","thing","though","through","tier","tiers/risk","time","time,","time.","timeout","to.","today","today.","told","total","track","transact","transaction).","transaction.","transactions.","transfer","transport","transportation.","turn","turnov","type","uganda","uganda.","unapprov","uncommon","under","uneasy.","uniqu","until","up","updat","upgrad","upon","urgent","us","user","users,","valid","validation,","venya","verbal","veri","verifi","wait","way","week","week'","week.","weekli","weekly,","well","wife","withdraw","work","worker","workers.","worri","year"],"mojaloop-background/level-one-principles.html":["(kyc)","access","addit","adequ","adher","adopt","aim","approach","benefit","between","cash","changes.","convenience,","cost","creat","custom","day","defin","design","develop","digit","economi","effici","exceed","exist","financi","fraud","fund","gener","governments,","guid","help","ident","immedi","implement","include:","inclus","individu","infrastructure,","innov","intern","interoper","know","level","loop","low","markets.","meet","model","new","ngo","on","open","open,","organ","outlin","participants,","partner","payment","people.","poor","principl","privat","project","proport","protect","provid","providers,","public","push","reduc","requir","resourc","risk,","robust,","same","sectors,","secur","servic","settlement","share","spark","standard","substanti","successfulli","system","transactions,","transfer","underli","util","valu","vision","well","wide","work"],"mojaloop-technical-overview/":["&","(and","(dfsps)","(oss)","(p2p)","(schema","abov","access","adapt","address","another.","bank","base","basic","behind","besid","between","bill","both","central","clear","client","code","community.","competit","complet","connect","contain","control","core","countries.","country,","customizable)","describ","develop","dfsp","diagram","digit","doesn't","domains:","don't","echo","enforc","exampl","example)","exist","fees.","financi","flow","follow","foundat","fraud","gate","goal","help","host","hous","hub","idea","ident","implement","interconnect","interfac","interoper","isol","issu","key","ledger,","lookup,","low","management,","mani","maxim","melinda","mojaloop","money","monopoli","move","multipl","need","network","network.","new","on","open","oper","opportun","order","oss","out","overal","overview","partnership","payment","peer","peopl","players.","poor","possibl","power","primari","provid","receiv","refer","rules.","scheme","send","servic","set","sever","show","shut","side","similar","singl","softwar","software.","solution.","sourc","split","standard","straightforward","subnetworks.","support","system","system,","system.","technic","through","togeth","transfer:","up","us","want","ways:","work"],"mojaloop-technical-overview/mojaloop-components.html":["(als)","/","account","ad","adapt","adapter/servic","adapters.","anoth","api","architecture:","bank","base","between","break","central","clear","client","code","colour","compon","components.","connect","consist","contain","core","countries.","data","depend","describ","develop","dfsp","diagram","down","e.g.","easili","ecosystem.","enforc","exampl","exist","extend","follow","fraud","fsp","goal","grade","handl","host","hous","hub","implement","indic","inform","interconnects.","interfac","intern","interoper","kafka","ledger","leverag","logic","look","lookup","make","manag","mechan","merchant","messag","micro","mojaloop","money","move","mysql","network.","note:","number","of:","on","open","oracl","orchestr","parti","particip","particp","pathfind","payment","possibl","primari","provid","receiv","refer","registry.","relationship","request","requir","requirements.","resolv","rout","rules.","sampl","schema","scheme","send","servic","services.","set","sever","show","side","similar","software.","sourc","standard","store,","straightforward","stream","system","through","transfers.","up","up.","us","utilis"],"mojaloop-technical-overview/central-ledger.html":["between","broker","central","clear","defer","dfsps,","facilit","fee","follow","functions:","fund","includ","ledger","level","maintain","messag","net","posit","propag","real","scheme","seri","servic","settlement","time","transfer"],"mojaloop-technical-overview/account-lookup-service.html":["\"default\"","&","(als)","(ml","(or","(oracles).","(refer","(semant","/particip","1.","1.1","1.2","2.","2.1","2.2","3.","3.1","3.2","4.","4.1","4.2","4217","6.2.1.2)","7.3.24","7.5.5","7.5.6","=","account","ad","adapt","adapter,","admin","al","align","alphabet","api","architectur","async","back","base","callback","cases:","central","code","compon","component).","config","configur","configuration.thi","consider","contract","core","correlation/persist","currenc","databas","default","defin","delet","depend","design","design.","details.","dfsp","diagram","directli","each","end","exists.","follow","following:","function","gener","handler","implement","implementation)","inform","intens","interfac","iso","it'","ledger","letter","look","lookup","loos","manag","mediat","ml","mojaloop","mojaloop.","multipl","notif","oper","option","optional,","oracl","oracle'","overview","part","parti","particip","partyidentifi","partyidtyp","pattern","per","persist","point","progress..","provid","provided,","purpos","reduc","registri","requir","resources.","respons","rout","routing/config","rules/config.","schema","section","see","sequenc","servic","service/adapt","services/adapt","similar","similiar","spec.","specif","specification.","standard","storage/manag","store","string.","support","switch","sync","systems)","three","up","us","v1","work"],"mojaloop-technical-overview/central-settlements-service.html":["account","api","between","central","deployment.","event","expos","fsp","hub.","inform","manag","mojaloop","part","project","provid","servic","settlement","settlements.","trigger","window"],"mojaloop-technical-overview/fraud-services.html":["fraud","progress...","servic","work"],"api/":["al","api","design","documentation:","mojaloop","oracl","specif","v1.0"]},"length":25},"tokenStore":{"root":{"0":{"1":{"1":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"docs":{}},"docs":{},".":{"8":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"docs":{}}},"1":{"0":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"2":{"3":{"4":{"5":{"6":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"docs":{}},"docs":{}},"docs":{}},"7":{"docs":{},".":{"0":{"docs":{},".":{"0":{"docs":{},".":{"1":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"docs":{}}},"docs":{}}},"docs":{}}},"docs":{}},"3":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}},"6":{"docs":{},"g":{"docs":{},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"8":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607}}}},"9":{"9":{"8":{"0":{"8":{"2":{"7":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},".":{"1":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"2":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"5":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"s":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"2":{"0":{"0":{"4":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"7":{"docs":{},")":{"docs":{},".":{"docs":{},"_":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"docs":{}},"1":{"6":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.005654281098546042}}}},"9":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}}},"docs":{}},"docs":{}},"2":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"5":{"0":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"%":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"6":{"1":{"6":{"docs":{},".":{"7":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.019801980198019802},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},".":{"0":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},".":{"0":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"docs":{}}},"1":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},".":{"1":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"2":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"docs":{}}},"2":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},".":{"1":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"docs":{}}},"3":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},".":{"1":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},"docs":{}}},"4":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"n":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"3":{"0":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}},"2":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"docs":{},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"r":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},".":{"1":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"2":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}},"4":{"0":{"docs":{},"g":{"docs":{},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"2":{"1":{"7":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"docs":{}},"docs":{}},"4":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},".":{"0":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"1":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"2":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"4":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}},"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},")":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"t":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"5":{"7":{"8":{"9":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"docs":{}},"docs":{}},"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},".":{"1":{"docs":{},",":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}},"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"t":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},",":{"0":{"0":{"0":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"docs":{}},"docs":{}},"docs":{}}},"6":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"t":{"docs":{},"h":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},".":{"2":{"docs":{},".":{"1":{"docs":{},".":{"2":{"docs":{},")":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}},"docs":{}}},"docs":{}}},"6":{"7":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}}}}},"docs":{}},"docs":{}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"7":{"6":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"8":{"1":{"3":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{}},"docs":{}},"docs":{},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"t":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},".":{"3":{"docs":{},".":{"2":{"4":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"docs":{}},"docs":{}}},"5":{"docs":{},".":{"5":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"6":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"docs":{}}},"docs":{}}},"8":{"0":{"docs":{},"%":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}},"6":{"0":{"1":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{}},"docs":{}},"docs":{},".":{"0":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"docs":{}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"t":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"9":{"docs":{},"a":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"docs":{},"(":{"2":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}}},"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},"p":{"docs":{},"s":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"a":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"o":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"a":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"n":{"docs":{},"d":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"s":{"docs":{},")":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},")":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"k":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"l":{"docs":{},"p":{"docs":{},")":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}},".":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"d":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"n":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"d":{"docs":{},"i":{"docs":{},"a":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"g":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"t":{"docs":{},"'":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"/":{"docs":{},"f":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}},"o":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}},"b":{"docs":{},"d":{"docs":{},")":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"h":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}},"y":{"docs":{},"p":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},")":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},"f":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"a":{"docs":{},"c":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"s":{"docs":{},"s":{"docs":{},")":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}}}}}},"a":{"docs":{},"f":{"docs":{},"e":{"docs":{},")":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"m":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}},"f":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}}}}}}},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},")":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099}}}}}}},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}},"p":{"2":{"docs":{},"p":{"docs":{},")":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}},"docs":{},"i":{"docs":{},")":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"u":{"docs":{},"s":{"docs":{},"h":{"docs":{},")":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099}}}}}}},"e":{"docs":{},".":{"docs":{},"g":{"docs":{},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385}},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"l":{"docs":{},"i":{"docs":{},"k":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},")":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},".":{"docs":{},"s":{"docs":{},".":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"w":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"i":{"docs":{},"c":{"docs":{},"h":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"#":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},"#":{"docs":{},"#":{"docs":{},"#":{"docs":{},")":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}},")":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}},")":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}},"b":{"docs":{},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}},"r":{"docs":{},"a":{"docs":{},"z":{"docs":{},"z":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}}},"$":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"&":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}},"g":{"docs":{},"l":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"y":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"k":{"docs":{},"y":{"docs":{},"c":{"docs":{},")":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}},"m":{"docs":{},"l":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"p":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.01903114186851211},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":3.3406862745098036},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}},"s":{"docs":{},"—":{"docs":{},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006920415224913495}}}}}}}},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}},"o":{"docs":{},"n":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}}}}},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"y":{"docs":{},"m":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}}}}},"h":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"d":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"a":{"docs":{},"p":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.02617801047120419},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"/":{"docs":{},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"h":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}}}}},":":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}},"s":{"docs":{},".":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}},",":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}},"i":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"o":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.022058823529411766},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}},"n":{"docs":{},"y":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}},"a":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"i":{"docs":{},"m":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{},",":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}}}},"o":{"docs":{},"n":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{},"p":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"d":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}},"c":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"v":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"a":{"docs":{},"l":{"docs":{},",":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}},"r":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.013731825525040387},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":5.01980198019802},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.015706806282722512},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.025735294117647058},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353},"api/":{"ref":"api/","tf":10.238095238095237}},"'":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}}}}}}}},"g":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}},"s":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"i":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032}}}},"n":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"i":{"docs":{},"c":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"r":{"docs":{},"a":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}},"o":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"l":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.03308823529411765},"api/":{"ref":"api/","tf":0.14285714285714285}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"y":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},"w":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"i":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}}}},"h":{"docs":{},"o":{"docs":{},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}}},"i":{"docs":{},"g":{"docs":{},"n":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/automated-testing.html":{"ref":"contributors-guide/tools-and-technologies/automated-testing.html","tf":0.09090909090909091},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}},"e":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"h":{"docs":{},"a":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}},"s":{"docs":{},"o":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"e":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},":":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"e":{"docs":{},"n":{"docs":{},"’":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"a":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"s":{"docs":{},".":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"s":{"docs":{},"k":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":3.3356589147286817},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}},"s":{"docs":{},"i":{"docs":{},"g":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}},"s":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"u":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"m":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}},"o":{"docs":{},"c":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}}}}}},"i":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"k":{"docs":{},"s":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}},"b":{"docs":{},"o":{"docs":{},"v":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"e":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"i":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"b":{"docs":{},"r":{"docs":{},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}},"r":{"docs":{},"u":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"m":{"docs":{},"d":{"6":{"4":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},"docs":{}},"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"a":{"docs":{},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"b":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"n":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"n":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"o":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"o":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/automated-testing.html":{"ref":"contributors-guide/tools-and-technologies/automated-testing.html","tf":5.181818181818182}},"a":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}},"d":{"docs":{},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}}}}}},"g":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.005654281098546042}}}}}}},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"a":{"docs":{},"b":{"docs":{},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}}}}},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"o":{"docs":{},"i":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"w":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"a":{"docs":{},"y":{"docs":{},";":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"z":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"f":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"i":{"docs":{},"m":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}},"b":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"s":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"c":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"h":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"e":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.011029411764705883}}}},"c":{"docs":{},"k":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034}}}}},"g":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/":{"ref":"mojaloop-background/","tf":5.015037593984962}}}}}}}},"u":{"docs":{},"p":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}},"e":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"r":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}},"b":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"e":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}},"s":{"docs":{},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},";":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}}},"n":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"t":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788}}}}},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"y":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}}}}}}}},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"l":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}}},"n":{"docs":{},"g":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"e":{"docs":{},"f":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"r":{"docs":{"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}}}}},"w":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.04945054945054945}},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},":":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"k":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.011627906976744186},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"g":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"s":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0084985835694051}}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}},"s":{"docs":{},"i":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"n":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"t":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},")":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}}}}},"k":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}}}},"y":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.00865051903114187}}}},"i":{"docs":{},"o":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"n":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"g":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"l":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.014393939393939395},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"—":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"r":{"docs":{},"t":{"docs":{},"h":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}},"t":{"docs":{},"b":{"docs":{},"w":{"docs":{},"f":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"}":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},"y":{"docs":{},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}},"m":{"docs":{},"g":{"docs":{},"f":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.019138755980861243},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.00862895493767977},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.09302325581395349},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.02},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.02617801047120419},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":3.3939393939393936},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.011029411764705883},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":3.4509803921568625}},".":{"docs":{},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}}}}},"i":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"r":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.06060606060606061}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.009693053311793215},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}},"`":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"c":{"docs":{},"k":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539}},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{},")":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.016483516483516484}}}},"s":{"docs":{},"e":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"d":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"u":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"c":{"docs":{},"`":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"f":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"b":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"o":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.006060606060606061},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"d":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/":{"ref":"contributors-guide/","tf":0.014164305949008499},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0144},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":3.3796296296296293},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.013953488372093023},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"!":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"o":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"l":{"docs":{},"i":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"u":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}},"a":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}},"n":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}}}},"s":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"p":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"/":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}}}}}}}}}}}},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.009302325581395349},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.015706806282722512},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.01838235294117647}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.019801980198019802}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}},")":{"docs":{},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}}},"u":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}},"e":{"docs":{},"r":{"docs":{},"’":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},"a":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"t":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"n":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}},"e":{"docs":{},"s":{"docs":{},":":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}},"y":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}}},"e":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}}}},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.03349282296650718},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.025},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.020942408376963352}}}}}},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"?":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"i":{"docs":{},"b":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0113314447592068},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.029411764705882353},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}},"e":{"docs":{},"?":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"o":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":5.0113314447592066},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"c":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},";":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"s":{"docs":{},";":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}},"u":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"l":{"docs":{},"u":{"docs":{},"d":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"u":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.011029411764705883}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}}}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"r":{"docs":{},"m":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308}}}}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"u":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"i":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"e":{"docs":{},"r":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"s":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.006462035541195477},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}},"u":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}}}},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},",":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}}}}}},"g":{"docs":{},"o":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"j":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.011627906976744186},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.017391304347826087}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"r":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"y":{"docs":{},"'":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"l":{"docs":{},"d":{"docs":{},"n":{"docs":{},"’":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},".":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}},"p":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.008885298869143781}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},")":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385}}}}}}}},"g":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"a":{"docs":{},"b":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"o":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"u":{"docs":{},"r":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}}}}}}}}}},"a":{"docs":{},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"e":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.022058823529411766},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":5.000865051903114},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.027777777777777776}},"a":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.027777777777777776}},"e":{"docs":{},",":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},")":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"l":{"docs":{},"l":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"p":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}},"y":{"docs":{},"r":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}},"w":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.029411764705882353},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":3.3608058608058604},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"e":{"docs":{},")":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}}}}}},"o":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"k":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}},"w":{"docs":{},"d":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"'":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"i":{"docs":{},"z":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}}}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":5.023255813953488},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.022058823529411766},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}}},"c":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.014705882352941176}}}}},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}}}}},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"c":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},".":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}},",":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}},"n":{"docs":{},"e":{"docs":{},"l":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"r":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.015340364333652923}},"(":{"docs":{},"s":{"docs":{},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}}}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"s":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.005303030303030303}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.009515570934256055}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099}}}}},"s":{"docs":{},"t":{"docs":{},"y":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"'":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"o":{"docs":{},"i":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},"s":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"r":{"docs":{},"e":{"docs":{},"o":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"h":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}}}},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"g":{"docs":{},"o":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"l":{"docs":{},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"n":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"p":{"docs":{},"u":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"/":{"docs":{},"c":{"docs":{},"d":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}}},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}}},"u":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"m":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}}}},"y":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}},"e":{"docs":{},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"l":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}},"p":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"i":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.00909090909090909}},"a":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}},"r":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"e":{"docs":{},"f":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"r":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"s":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}},":":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}},"h":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}},"u":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0056},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"d":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}},"o":{"docs":{},"p":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"i":{"docs":{},"c":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}}}}},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.009693053311793215},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"e":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"i":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"o":{"docs":{},"y":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":5.02013422818792},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}}},";":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}}}}}}}}}}}}}}}},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}}}}},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"e":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"m":{"docs":{},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"`":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/automated-testing.html":{"ref":"contributors-guide/tools-and-technologies/automated-testing.html","tf":0.09090909090909091},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},"p":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"k":{"docs":{},"t":{"docs":{},"o":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"i":{"docs":{},"g":{"docs":{},"n":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.009693053311793215},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.01838235294117647},"api/":{"ref":"api/","tf":0.047619047619047616}},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"n":{"docs":{},"i":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"a":{"docs":{},"l":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"b":{"docs":{},"u":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"c":{"docs":{},"i":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}},"m":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"r":{"docs":{},"b":{"docs":{},"y":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"s":{"docs":{},":":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"f":{"docs":{},"s":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.028708133971291867},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.035},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.031413612565445025},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"s":{"docs":{},",":{"docs":{"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}}}}}}},"i":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.014354066985645933},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.009302325581395349},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.03007518796992481},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.02608695652173913},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"a":{"docs":{},"l":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}}}}}}},"f":{"docs":{},"f":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}},"i":{"docs":{},"c":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}},"d":{"docs":{},"v":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}}}}}}},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"y":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"d":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"l":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"y":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"a":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"u":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"d":{"docs":{},"n":{"docs":{},"’":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"o":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}},"e":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"’":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}}}}},"c":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0084985835694051},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":10.126582278481013},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":5.03960396039604},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":3.3348484848484845},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"w":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},":":{"docs":{"api/":{"ref":"api/","tf":0.09523809523809523}}}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}}}}}},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.009587727708533078},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0056},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"w":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}}}}}}}},"u":{"docs":{},"b":{"docs":{},"t":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"l":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788}},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"z":{"docs":{},"e":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},":":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}},"n":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"=":{"docs":{},"k":{"docs":{},"v":{"docs":{},"m":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},"a":{"docs":{},"w":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"o":{"docs":{},"p":{"docs":{},"b":{"docs":{},"o":{"docs":{},"x":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"u":{"docs":{},"g":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"a":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}},"t":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},".":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}},"a":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.011029411764705883}},"e":{"docs":{},"s":{"docs":{},":":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"s":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"b":{"docs":{},"o":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.009587727708533078},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},".":{"docs":{},"y":{"docs":{},"a":{"docs":{},"m":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},":":{"docs":{},"/":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"/":{"docs":{},"#":{"docs":{},"!":{"docs":{},"/":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}},";":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"e":{"docs":{},"s":{"docs":{},"—":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}}}}},"c":{"docs":{},"t":{"docs":{},"y":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}}}}},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}},"y":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}},"b":{"2":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"docs":{},"a":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"e":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}}}}},"w":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"a":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"o":{"docs":{},"m":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"y":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.009569377990430622}}}},"i":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}}}}}},"h":{"docs":{},"o":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}},"c":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"d":{"docs":{},"!":{"docs":{},")":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}}}}}}}},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.037037037037037035},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.014705882352941176}},"i":{"docs":{},"a":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"p":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"o":{"docs":{},"w":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.005190311418685121}},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"i":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"t":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}},"r":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}}}}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},")":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"c":{"docs":{},"a":{"docs":{},"p":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"t":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"r":{"docs":{},"y":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"'":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"t":{"docs":{},"h":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"x":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.014354066985645933},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0084985835694051},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.015},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676}},"e":{"docs":{},",":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}}},":":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.013636363636363636},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788}}}},")":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}},"c":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"?":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"s":{"docs":{},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"n":{"docs":{},"d":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"r":{"docs":{},"a":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"p":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"e":{"docs":{},"d":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}},"p":{"docs":{},"i":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"o":{"docs":{},"r":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"s":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"n":{"docs":{},"s":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"o":{"docs":{},"s":{"docs":{"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}}}}}},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.009302325581395349},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.005190311418685121},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}},"s":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},"y":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"p":{"docs":{},"i":{"docs":{},"c":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"s":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"g":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"y":{"docs":{},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"l":{"docs":{},"o":{"docs":{},"y":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.007785467128027681}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"e":{"docs":{},"r":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}}}}},"r":{"docs":{},"r":{"docs":{},"_":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"_":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"_":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{},"e":{"docs":{},"d":{"docs":{},"`":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},".":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}}}}},"t":{"docs":{},"c":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},",":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"o":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"u":{"docs":{},"c":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}}},".":{"docs":{},"g":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"y":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"s":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}},"f":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"e":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}},"s":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}},"d":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"?":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}}},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":3.3608058608058604},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"/":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}}}}}}}}}}}}}}},"w":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.03349282296650718},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.013953488372093023},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.05263157894736842},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.02608695652173913},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01}}}}},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}}},"d":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.009302325581395349},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}},"e":{"docs":{},"b":{"docs":{},"i":{"docs":{},"r":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"x":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},")":{"docs":{},".":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}},"l":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.006711409395973154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},")":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"'":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}},"a":{"docs":{},"k":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"v":{"docs":{},"o":{"docs":{},"r":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"g":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"e":{"docs":{},"x":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"i":{"docs":{},"p":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}}},"r":{"docs":{},"a":{"docs":{},"u":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/fraud-services.html":{"ref":"mojaloop-technical-overview/fraud-services.html","tf":5.25}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"u":{"docs":{},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}},"m":{"docs":{},"e":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},".":{"docs":{"contributors-guide/tools-and-technologies/automated-testing.html":{"ref":"contributors-guide/tools-and-technologies/automated-testing.html","tf":0.09090909090909091}}}}}}}}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"—":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"e":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},")":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":3.3356589147286817}}}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"l":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032}}}}}}}}},"a":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.009515570934256055}},"a":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"y":{"docs":{},"'":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"q":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"v":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},"i":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"c":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{},"t":{"docs":{"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}}}}}}},"i":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"t":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"r":{"docs":{},"m":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"u":{"docs":{},"l":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"l":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}},"\"":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},",":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}}},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.027777777777777776},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},":":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"s":{"docs":{},":":{"docs":{"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}}}}}}}}},"d":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006920415224913495},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}},"r":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}},"`":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.007670182166826462},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.02531645569620253},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.005303030303030303},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}},"s":{"docs":{},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"k":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.03296703296703297}},":":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}},"m":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},"a":{"docs":{},"t":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.012924071082390954},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}},":":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"5":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.006060606060606061}}}}},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"?":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"t":{"docs":{},"h":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"a":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.016666666666666666},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"'":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.004545454545454545},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"r":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"t":{"docs":{},"h":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}}}},"c":{"docs":{},"u":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"w":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"o":{"docs":{},"t":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"p":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.058823529411764705}}}}},"g":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"n":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}}}},"t":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.04395604395604396},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}}},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"a":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},",":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}}}}}}},"o":{"docs":{},"d":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.007785467128027681}}},"g":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}}}}},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}}}},"e":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.015909090909090907},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"'":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}},"e":{"docs":{},"s":{"docs":{},"'":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}},"v":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"p":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"a":{"docs":{},"l":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}},"s":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"o":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}},"u":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"d":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":5.005665722379604},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.02531645569620253},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":3.334090909090909},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.02608695652173913}},"e":{"docs":{},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.022058823529411766},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}},"m":{"docs":{},"d":{"docs":{},")":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}},"]":{"docs":{},"(":{"docs":{},"a":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},"a":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"e":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"w":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},"u":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"m":{"docs":{},"a":{"docs":{},"k":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"p":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"w":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}},"d":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"h":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"l":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.004545454545454545}}}}}},"a":{"docs":{},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}},"h":{"2":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}},"3":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}},"4":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}},"docs":{},"e":{"docs":{},"l":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.014354066985645933},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"?":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"m":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.039309683604985615},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}},"]":{"docs":{},"(":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},".":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"m":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"_":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"m":{"docs":{},"/":{"docs":{},"#":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"`":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"r":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},".":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"h":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"d":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.04950495049504951},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"r":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}},"u":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"l":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"l":{"docs":{},"d":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"w":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"t":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099}}}}}},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"u":{"docs":{},"b":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.025},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":5.015706806282722}},".":{"docs":{"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"g":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"a":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}},"r":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"s":{"docs":{},"n":{"docs":{},"’":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"n":{"docs":{},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"e":{"docs":{},"r":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}},"t":{"docs":{},"e":{"docs":{},"o":{"docs":{},"a":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308}}}}},"l":{"docs":{},"f":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"m":{"docs":{},"i":{"docs":{},"m":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.007785467128027681}}},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},":":{"docs":{},"/":{"docs":{},"/":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},":":{"8":{"0":{"0":{"1":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"v":{"1":{"docs":{},"/":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"m":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},"/":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"m":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"o":{"docs":{},"/":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"w":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},".":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"m":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}}}},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}}}}}}},"w":{"docs":{},"w":{"docs":{},"w":{"docs":{},".":{"docs":{},"w":{"3":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"t":{"docs":{},"r":{"docs":{},"/":{"1":{"9":{"9":{"8":{"docs":{},"/":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}},"docs":{}}}}}}}}},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"o":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"d":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"l":{"docs":{},".":{"docs":{},"p":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"n":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"/":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"6":{"4":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"u":{"docs":{},"m":{"docs":{},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"j":{"docs":{},"o":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"h":{"docs":{},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},"b":{"docs":{},"y":{"docs":{},"/":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},".":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.016483516483516484}}}}}}},"m":{"docs":{},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"/":{"docs":{},".":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.016483516483516484}}}}}}}}}}}}}}}}}}}}}}}}}},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"p":{"docs":{},"/":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"s":{"docs":{},"/":{"docs":{},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"s":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{},".":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"d":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"b":{"docs":{},"o":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},"/":{"docs":{},"v":{"1":{"docs":{},".":{"1":{"0":{"docs":{},".":{"1":{"docs":{},"/":{"docs":{},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"d":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"o":{"docs":{},"y":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"d":{"docs":{},"/":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"/":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"/":{"docs":{},"m":{"docs":{},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},".":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},".":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},".":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"p":{"docs":{},".":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"s":{"docs":{},".":{"docs":{},"i":{"docs":{},"e":{"docs":{},"t":{"docs":{},"f":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},"/":{"docs":{},"r":{"docs":{},"f":{"docs":{},"c":{"5":{"7":{"8":{"9":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"w":{"docs":{},"w":{"docs":{},".":{"docs":{},"a":{"docs":{},"m":{"docs":{},"a":{"docs":{},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"g":{"docs":{},"p":{"docs":{},"/":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"0":{"5":{"9":{"6":{"8":{"0":{"5":{"8":{"2":{"9":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}},"w":{"3":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"s":{"docs":{},"/":{"docs":{},"r":{"docs":{},"f":{"docs":{},"c":{"2":{"6":{"1":{"6":{"docs":{},"/":{"docs":{},"r":{"docs":{},"f":{"docs":{},"c":{"2":{"6":{"1":{"6":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}},"docs":{}},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"m":{"docs":{},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}},"m":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"a":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.004545454545454545}}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"—":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}}}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}},"m":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"i":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.009515570934256055}},"e":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},"n":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}}}}}}}}}},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}},"i":{"docs":{},"o":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.014354066985645933},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0084985835694051},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.025},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.011029411764705883}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}}}}}},"i":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.005752636625119847},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}},"r":{"docs":{},"o":{"docs":{},"v":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}},"e":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"a":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}},"e":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"m":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"l":{"docs":{},"y":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}}},"n":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"e":{"docs":{},":":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}},"u":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"o":{"docs":{},"m":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"d":{"docs":{},"i":{"docs":{},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{},"u":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"a":{"docs":{},"l":{"docs":{},"'":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}}}}},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.04314477468839885},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"n":{"docs":{},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"t":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"a":{"docs":{},"n":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"s":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}}}}}},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}},"u":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"p":{"docs":{},"i":{"docs":{},"r":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.014354066985645933},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.015},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.011029411764705883}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}},".":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"o":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.014354066985645933},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.011627906976744186},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"g":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676}},"e":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"s":{"docs":{},".":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}}}}}}}},"g":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.018518518518518517},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"r":{"docs":{},"m":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.014705882352941176},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},":":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032}},"e":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"i":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"i":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405}}}}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}}}},"d":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"”":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}},"i":{"docs":{},"g":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"o":{"docs":{},"i":{"docs":{},"c":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"l":{"docs":{},"v":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"n":{"docs":{},"o":{"docs":{},"v":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}}}}}},"s":{"docs":{},"o":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"l":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}},"s":{"docs":{},"u":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.014164305949008499},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"e":{"docs":{},"\"":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"#":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},",":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}}}},"t":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}}}}}},"'":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"e":{"docs":{},"m":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"’":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"?":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"l":{"docs":{},"p":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"b":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"i":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"r":{"docs":{},"e":{"docs":{},"v":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},";":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}}}}}}},"k":{"8":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"docs":{},"e":{"docs":{},"y":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},"e":{"docs":{},"p":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"p":{"docs":{},"t":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.02531645569620253}}}}},"m":{"docs":{},"s":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.011505273250239693},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}},"`":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}}},"r":{"docs":{},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{},"]":{"docs":{},"(":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},"/":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"s":{"docs":{},"/":{"docs":{},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"s":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.032598274209012464},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"v":{"docs":{},"m":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}},"a":{"docs":{},"f":{"docs":{},"k":{"docs":{},"a":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}},"m":{"docs":{},"p":{"docs":{},"a":{"docs":{},"l":{"docs":{},"a":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}}},"n":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006920415224913495}},"'":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"c":{"docs":{},"k":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"w":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"o":{"docs":{},"f":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"y":{"docs":{},"l":{"docs":{},"e":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"l":{"1":{"docs":{},"p":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}},"docs":{},"e":{"docs":{},"d":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":3.3939393939393936},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"/":{"docs":{},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"h":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"’":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},":":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}}}}}},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":3.359420289855072},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}},"o":{"docs":{},"n":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},".":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}}}}}}}}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}}},"a":{"docs":{},"n":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},"e":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"g":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}},"i":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"f":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"o":{"docs":{},"k":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.015706806282722512},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.014705882352941176}},"u":{"docs":{},"p":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":3.348039215686274}},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}},"p":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},";":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"s":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}},"w":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.018518518518518517},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"e":{"docs":{},"r":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}},"e":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"a":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.00862895493767977},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}}},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"i":{"docs":{},"c":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}},"n":{"docs":{},"g":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"e":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"s":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}},"r":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}},"/":{"docs":{},"#":{"docs":{},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"s":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"y":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115}}},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"s":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"g":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"w":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"s":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.022058823529411766},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}},"n":{"docs":{},"k":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"s":{"docs":{},"/":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"u":{"docs":{},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"(":{"docs":{},"u":{"docs":{},"b":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"u":{"docs":{},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}}},"s":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.006711409395973154},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.004545454545454545}},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"b":{"docs":{},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"w":{"docs":{},"e":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"f":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"t":{"docs":{},"t":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"v":{"docs":{},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"c":{"docs":{},"i":{"docs":{},"d":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}}},"m":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0072},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.058823529411764705}},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"\"":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"i":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}},"r":{"docs":{},"k":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}},"e":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}},"s":{"docs":{},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"s":{"docs":{},"?":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"c":{"docs":{},"h":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}}},"i":{"docs":{},"a":{"docs":{},"d":{"docs":{},"b":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"r":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"x":{"docs":{},"i":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}},"i":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},".":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}}}}}}},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}},"o":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"k":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.016483516483516484},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"s":{"docs":{},"i":{"docs":{},"v":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"d":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.046511627906976744},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.04411764705882353},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"j":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"c":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}},"u":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"p":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.01124567474048443},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.009569377990430622}}}}}}}}},"g":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099}}},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"a":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"i":{"docs":{},"m":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}}},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"e":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.018518518518518517},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}}}}}},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}},"o":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":3.3703703703703702},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"a":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"d":{"docs":{},"i":{"docs":{},"a":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"t":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}}}},"c":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"a":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.012121212121212121},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}},"u":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}}},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}}}}}}},"r":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}}}}},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"s":{"docs":{},"b":{"docs":{},"o":{"docs":{},"x":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},",":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}}},"j":{"docs":{},"a":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":5.023923444976076},"contributors-guide/":{"ref":"contributors-guide/","tf":0.019830028328611898},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":5.012464046021093},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.022058823529411766},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.022058823529411766},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.04945054945054945},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0072},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.023255813953488372},"mojaloop-background/":{"ref":"mojaloop-background/","tf":5.037593984962406},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.00865051903114187},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":3.393333333333333},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":5.041884816753926},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.022058823529411766},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353},"api/":{"ref":"api/","tf":0.14285714285714285}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},".":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"'":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},"’":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"?":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}}}}}},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},".":{"docs":{},"*":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"n":{"docs":{},"e":{"docs":{},"y":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0084985835694051},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.010380622837370242},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.015706806282722512}},")":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"o":{"docs":{},"p":{"docs":{},"o":{"docs":{},"l":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}},"i":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"t":{"docs":{},"h":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"v":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.015706806282722512}}}},"b":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0113314447592068},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}}},"r":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"c":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"c":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}},"n":{"docs":{},"i":{"docs":{},"m":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}},"u":{"docs":{},"m":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.006711409395973154}},"e":{"docs":{},"/":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}},"o":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},",":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.019801980198019802}}}}}}}}},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}},"s":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}}},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}}}}},"r":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"—":{"docs":{},"t":{"docs":{},"o":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"w":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}}}},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.0069767441860465115},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}},"v":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"m":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.00909090909090909},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}}},"=":{"docs":{},"m":{"docs":{},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"e":{"docs":{},"=":{"docs":{},"d":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}}}}}},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}}}},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"b":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"e":{"docs":{},"e":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.012},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"e":{"docs":{},"d":{"docs":{},"?":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.06060606060606061}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},".":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676}}},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"w":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0084985835694051},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.046511627906976744},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":3.355311355311355},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.009302325581395349},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.004545454545454545},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"x":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}}},"a":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"d":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"o":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"j":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}}}}}}}},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385}},"g":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"f":{"docs":{},"i":{"docs":{},"t":{"docs":{},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"t":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.006818181818181818}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}},"i":{"docs":{},"f":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}}}}}},"o":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"h":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"?":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"w":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"u":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.04411764705882353},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.019801980198019802},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788}},"a":{"docs":{},"l":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"p":{"docs":{},"o":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}},"p":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"k":{"docs":{},"i":{"docs":{},"s":{"docs":{},"h":{"docs":{},"a":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.010380622837370242}}}}}}}},"—":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},":":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}},"n":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.007575757575757576},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":3.359420289855072},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"b":{"docs":{},"o":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}},"g":{"docs":{},"o":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0056}}}}},":":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}},")":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"?":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.014354066985645933},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0096},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.013953488372093023},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.02},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"'":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"u":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"a":{"docs":{},"l":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}},",":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}},"m":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"g":{"docs":{},"a":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}},"i":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.02197802197802198},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}}},"a":{"docs":{},"c":{"docs":{},"l":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.015706806282722512},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.025735294117647058},"api/":{"ref":"api/","tf":0.09523809523809523}},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"'":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.008333333333333333},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}}}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"w":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"o":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{"./":{"ref":"./","tf":5.0047846889952154},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.02531645569620253},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":3.338333333333333},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},":":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}}},"a":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"l":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}}}}}}},"w":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"d":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}},",":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"s":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},")":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.008885298869143781}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"v":{"docs":{},"i":{"docs":{},"o":{"docs":{},"u":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"l":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}},"p":{"1":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"docs":{},"a":{"docs":{},"y":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.005190311418685121}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.019138755980861243},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.020930232558139535},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.007785467128027681},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"r":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}},"i":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"c":{"docs":{},"i":{"docs":{},"p":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.015706806282722512},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.022058823529411766}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"p":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"s":{"docs":{},"h":{"docs":{},"i":{"docs":{},"p":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}}}},"y":{"docs":{},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.005654281098546042}}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"i":{"docs":{},"s":{"docs":{},"m":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}},"o":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/automated-testing.html":{"ref":"contributors-guide/tools-and-technologies/automated-testing.html","tf":0.09090909090909091},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}},"n":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},")":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"c":{"docs":{},"h":{"3":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"6":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"h":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.008885298869143781},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}}}},"s":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"i":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"e":{"docs":{},"o":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.004545454545454545},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"e":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"'":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}},"a":{"docs":{},"g":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}}}}},"i":{"docs":{},"o":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"s":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"s":{"docs":{},"a":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"n":{"docs":{},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"e":{"docs":{},"r":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.014354066985645933},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.011627906976744186}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}}}},",":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}},"y":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}},"c":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"t":{"docs":{},"u":{"docs":{},"m":{"docs":{},"l":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}},"i":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.005752636625119847},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"u":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"e":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.010546500479386385},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"z":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}}}}}}}}}}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{},"a":{"docs":{},"r":{"docs":{},"y":{"docs":{},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}}}}},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}},"s":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}}},"r":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}},"l":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"f":{"docs":{},"o":{"docs":{},"l":{"docs":{},"i":{"docs":{},"o":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.011029411764705883}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}}},"y":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"r":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"t":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0113314447592068},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.017391304347826087},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}},",":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},";":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.023923444976076555},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0226628895184136},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0072},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.011627906976744186},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.02608695652173913},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.015},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.020942408376963352},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.029411764705882353},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"d":{"docs":{},",":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}},"c":{"docs":{},"e":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}},"s":{"docs":{},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"o":{"docs":{},"r":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},":":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}}}}}},"d":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.039603960396039604}}}}}}},"x":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.004545454545454545}},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},")":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"…":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},",":{"docs":{},"\"":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},".":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},".":{"docs":{"mojaloop-technical-overview/fraud-services.html":{"ref":"mojaloop-technical-overview/fraud-services.html","tf":0.25}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}},"c":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"o":{"docs":{},"f":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"r":{"docs":{},"t":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"a":{"docs":{},"g":{"docs":{"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385}},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"i":{"docs":{},"x":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}},"v":{"docs":{},"i":{"docs":{},"o":{"docs":{},"u":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"m":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"i":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"c":{"docs":{},"i":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},"e":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"i":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.005654281098546042},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":3.350724637681159}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"c":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"a":{"docs":{},"g":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":5.006462035541196}}}}}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"e":{"docs":{},",":{"2":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.012110726643598616}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006055363321799308}}}}},"t":{"docs":{},"o":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}},"'":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}}}}}}},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"s":{"docs":{},"o":{"docs":{},"p":{"docs":{},"h":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/automated-testing.html":{"ref":"contributors-guide/tools-and-technologies/automated-testing.html","tf":0.09090909090909091}}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"h":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}},"r":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}}}}},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}}}}}},"l":{"docs":{},"l":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.022058823529411766},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"s":{"docs":{},"h":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.02197802197802198},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385}}},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}},"i":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.022058823529411766},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"p":{"docs":{},"e":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"c":{"docs":{},"k":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}},"d":{"docs":{},"f":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"n":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}},"r":{"docs":{},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"c":{"docs":{},"e":{"docs":{},"i":{"docs":{},"v":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"p":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.006711409395973154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}},"r":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"h":{"docs":{},"i":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.046511627906976744},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.08088235294117647},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},"?":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"s":{"docs":{},".":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"v":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385}}}},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.03296703296703297}},"r":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},".":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"y":{"docs":{},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},".":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"=":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"m":{"docs":{},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},"/":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"m":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},"/":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},":":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}},"r":{"docs":{},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"e":{"docs":{},"s":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.007670182166826462},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.006462035541195477},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"e":{"docs":{},"d":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.005752636625119847},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.022058823529411766},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"o":{"docs":{},"l":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"a":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"'":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"l":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"c":{"docs":{},"h":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.012878787878787878},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},"e":{"docs":{},"d":{"1":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}}}}}}},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"r":{"docs":{},"y":{"docs":{},".":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},"i":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.01838235294117647}}}}}}},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.022058823529411766},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/automated-testing.html":{"ref":"contributors-guide/tools-and-technologies/automated-testing.html","tf":0.09090909090909091}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"s":{"docs":{},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.009693053311793215},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"s":{"docs":{},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"i":{"docs":{},"b":{"docs":{},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}}}}}}}}},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":5.019386106623586}},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},":":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"a":{"docs":{},"u":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.006462035541195477},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"a":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}}}}}}},"t":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.016483516483516484},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},":":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},"s":{"docs":{},":":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"u":{"docs":{},"c":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"s":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"i":{"docs":{},"s":{"docs":{},"k":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0084985835694051},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},",":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}}}}}}}}},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"e":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"y":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"u":{"docs":{},"t":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.022058823529411766}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}}}}}}},"o":{"docs":{},"m":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"b":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},",":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}}},"a":{"docs":{},"m":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}}}}}},"g":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"i":{"docs":{},"s":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}},"t":{"docs":{},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}}}},"m":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"f":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},"&":{"docs":{},"d":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"s":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"r":{"docs":{},"e":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"a":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}}}}}},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"p":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":5.003460207612457}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311}}}}}}}},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"t":{"docs":{},"t":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"n":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.00865051903114187},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788}},"e":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"r":{"docs":{},"v":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"i":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.019138755980861243},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.02558139534883721},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.03007518796992481},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.02608695652173913},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.03},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.03664921465968586},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":3.3939393939393936},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":3.3627450980392153},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":3.4509803921568625},"mojaloop-technical-overview/fraud-services.html":{"ref":"mojaloop-technical-overview/fraud-services.html","tf":5.25}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},".":{"docs":{},"i":{"docs":{},"m":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},"=":{"docs":{},"v":{"5":{"docs":{},".":{"1":{"docs":{},".":{"1":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},"docs":{}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}},"—":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}}}},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"a":{"docs":{},"p":{"docs":{},"t":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"a":{"docs":{},"p":{"docs":{},"t":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}},"a":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"t":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676}},"t":{"docs":{},"l":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.06060606060606061},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":3.5392156862745097}},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"s":{"docs":{},".":{"docs":{"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},":":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}}}}}}}}},"u":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.006711409395973154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}},"c":{"1":{"0":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"docs":{}},"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.005190311418685121},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}},"s":{"docs":{},"/":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.04950495049504951},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.014705882352941176}}}}},"o":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"s":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}}},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0113314447592068},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.00865051903114187},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.011029411764705883}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"m":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.005752636625119847},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"g":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607}}}}}},"r":{"docs":{},"e":{"docs":{},"g":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}}}}}}}},"h":{"docs":{},"o":{"docs":{},"w":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676}},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"p":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.017391304347826087}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"i":{"docs":{},"f":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"l":{"docs":{},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"e":{"docs":{},"'":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"c":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},")":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"i":{"docs":{},"a":{"docs":{},"r":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}},"p":{"docs":{},"l":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"f":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385}}}}}}}},"z":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"g":{"docs":{},"n":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}}}}},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}},"t":{"docs":{},"e":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.013953488372093023},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},"e":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.014354066985645933},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0104},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.009302325581395349},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.02},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"e":{"docs":{},"'":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"?":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0084985835694051},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}},"e":{"docs":{},"'":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}},"t":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}}}},"l":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}}},"v":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"a":{"docs":{},"r":{"docs":{},"q":{"docs":{},"u":{"docs":{},"b":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{},"f":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.014705882352941176},"api/":{"ref":"api/","tf":0.19047619047619047}},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.005654281098546042},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"'":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"s":{"docs":{},")":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}}}}}}}}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},")":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}},"e":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"c":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"a":{"docs":{},"k":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"l":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.006818181818181818}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"n":{"docs":{},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"5":{"docs":{},".":{"1":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}},"docs":{}}},"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.04411764705882353},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"g":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}},"r":{"docs":{},"k":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"l":{"docs":{},"i":{"docs":{},"t":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":10.044117647058824},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.007269789983844911},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.05063291139240506},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.015706806282722512},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"r":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"u":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674}}}}}},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.00909090909090909}},"f":{"docs":{},"u":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"u":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}},"f":{"docs":{},"f":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"r":{"docs":{},"a":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"l":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"n":{"docs":{},"g":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"s":{"docs":{},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},".":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}},"a":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"e":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}}}},"e":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},",":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.010471204188481676}}}}},"p":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"e":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.0297029702970297}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"u":{"docs":{},"d":{"docs":{},"i":{"docs":{},"o":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}}}}}},"y":{"docs":{},"l":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.05063291139240506},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":3.3348484848484845}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}}}},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}},"u":{"docs":{},"b":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}},"c":{"docs":{},"t":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}},"q":{"docs":{},"u":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"i":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},"f":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}}}}}},"h":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}},"d":{"docs":{},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"r":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"p":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0088},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},"e":{"docs":{},"d":{"docs":{},"?":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"v":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}}}}}}}}},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"i":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.014705882352941176},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0064},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004038772213247173},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.007785467128027681},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.017391304347826087},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},".":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},")":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}},"n":{"docs":{},"c":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},".":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"s":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}}},"'":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"m":{"docs":{},"b":{"docs":{},"o":{"docs":{},"l":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.029411764705882353},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"b":{"docs":{},"o":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}}}}}},"a":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032}},",":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.018518518518518517},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}},"p":{"docs":{},"l":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}},"v":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"t":{"docs":{},"i":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"f":{"docs":{},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"l":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"a":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"m":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.014705882352941176}},"'":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}},"k":{"docs":{},"e":{"docs":{},"_":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"e":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"b":{"docs":{},"o":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"r":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"q":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"v":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"r":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0030303030303030303}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},"n":{"docs":{},"o":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":5.0032},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006920415224913495}},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}}}},"i":{"docs":{},"c":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":3.338333333333333}}}}}}},"a":{"docs":{},"m":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0056},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"r":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},";":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}},"a":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"s":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.007670182166826462},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.08333333333333333},"contributors-guide/tools-and-technologies/automated-testing.html":{"ref":"contributors-guide/tools-and-technologies/automated-testing.html","tf":5.2727272727272725}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}},".":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}}}}},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"l":{"docs":{},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}},"x":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.015706806282722512}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"e":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}},"a":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"a":{"docs":{},"t":{"docs":{},"'":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"n":{"docs":{},"k":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"'":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}}},"a":{"docs":{},"f":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}}}}},"m":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"y":{"docs":{},"'":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"r":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},",":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}},"u":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"o":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}},";":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539}},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"o":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":5.0104},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},"s":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"p":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"\"":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"l":{"docs":{},"d":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.009302325581395349},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006920415224913495}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},";":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}},")":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}}},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},",":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}}}}}}}},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.06060606060606061}},")":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"s":{"docs":{},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}},":":{"docs":{"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}},"c":{"docs":{},"k":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}}}}}},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"i":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}}}}}},"a":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}}},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"u":{"docs":{},"m":{"docs":{},"p":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"s":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"b":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"s":{"docs":{},"k":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"l":{"docs":{},"k":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"g":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}},"d":{"docs":{},"e":{"docs":{},"o":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.007785467128027681}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"i":{"docs":{},"c":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"h":{"docs":{},"i":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}},"b":{"docs":{},"c":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"i":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},"c":{"docs":{},"k":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}},".":{"docs":{},".":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"m":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475},"mojaloop-technical-overview/central-ledger.html":{"ref":"mojaloop-technical-overview/central-ledger.html","tf":0.030303030303030304}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},".":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"t":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.005303030303030303}}}},"e":{"docs":{},"r":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}},"s":{"docs":{},"/":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"k":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788}}}},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"o":{"docs":{},"v":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"u":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006920415224913495},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.020942408376963352},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.014705882352941176}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},":":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.006711409395973154},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}}}}}}},"o":{"docs":{},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},".":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}},"s":{"docs":{"./":{"ref":"./","tf":0.009569377990430622},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0084985835694051},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.00862895493767977},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.01098901098901099},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0192},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.017770597738287562},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.039603960396039604},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.03333333333333333},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.03488372093023256},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.009515570934256055},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.01},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.012110726643598616}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"d":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"a":{"docs":{},"g":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"s":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"p":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.004651162790697674},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}},"l":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"t":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.037037037037037035},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.007575757575757576}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},",":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}},"f":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"q":{"docs":{},"u":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"p":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"v":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"c":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"b":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}}}}},"b":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"u":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}},":":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}}}}}}},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}}},"r":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.016962843295638127}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"l":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.017391304347826087}},"i":{"docs":{},"s":{"docs":{"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}}}}}}},".":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.006060606060606061}}}}},"g":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"a":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}}}}}}}},"w":{"3":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}},"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"y":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}},"s":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}},"s":{"docs":{},",":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}}}},"i":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"s":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.003787878787878788}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.004784688995215311},"contributors-guide/":{"ref":"contributors-guide/","tf":0.0226628895184136},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0064},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.005190311418685121},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588},"mojaloop-technical-overview/fraud-services.html":{"ref":"mojaloop-technical-overview/fraud-services.html","tf":0.25}},"s":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},"e":{"docs":{},"r":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"s":{"docs":{},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024}}}}}}},"?":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.0297029702970297},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.004545454545454545}}},"s":{"docs":{},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}},"y":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"l":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.004545454545454545}},",":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"'":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}},"r":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}}}}}},"h":{"docs":{},"a":{"docs":{},"t":{"docs":{},"'":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"e":{"docs":{},"v":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}}},"e":{"docs":{},"v":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"'":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"i":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0024},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"d":{"docs":{},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"n":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-technical-overview/central-settlements-service.html":{"ref":"mojaloop-technical-overview/central-settlements-service.html","tf":0.029411764705882353}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"d":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}},"t":{"docs":{},"h":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}},"k":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"r":{"docs":{},"e":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"a":{"docs":{},"m":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}}}}},"f":{"docs":{},"e":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.004325259515570935}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0056657223796034},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.006060606060606061}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"e":{"docs":{},"b":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},":":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"e":{"docs":{},"k":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},"'":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}},"l":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}},"y":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}},"l":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"’":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}},"n":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"s":{"docs":{},"o":{"2":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"docs":{}}},"y":{"docs":{},"s":{"docs":{},"i":{"docs":{},"w":{"docs":{},"y":{"docs":{},"g":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}},"w":{"docs":{},"w":{"docs":{},".":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"f":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385}},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},",":{"docs":{},"\"":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}}}},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{},"\"":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}},"$":{"docs":{},"\"":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"\\":{"docs":{},"\"":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"_":{"docs":{},"\"":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"c":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"\"":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"\"":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}}}},"m":{"docs":{},"\"":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"q":{"docs":{},"\"":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"\"":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"\"":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.02531645569620253},"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}}}}}}}}}}}}}},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"\"":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}}}}}}}}}},"i":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}}}},"t":{"docs":{},"o":{"docs":{},".":{"docs":{},"\"":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"'":{"docs":{},"m":{"docs":{},"o":{"docs":{},"j":{"docs":{},"a":{"docs":{},"l":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}}}},"d":{"docs":{},"e":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}}},"v":{"5":{"docs":{},".":{"1":{"docs":{},".":{"1":{"docs":{},"'":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"docs":{}}},"docs":{}}},"docs":{},"m":{"docs":{},"x":{"docs":{},"|":{"docs":{},"s":{"docs":{},"v":{"docs":{},"m":{"docs":{},"'":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},"f":{"docs":{},"r":{"docs":{},"e":{"docs":{},"e":{"docs":{},"z":{"docs":{},"e":{"docs":{},"'":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}},"*":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0113314447592068},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}},"*":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"*":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.01384083044982699}}}}},"j":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"h":{"docs":{},"n":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"s":{"docs":{},"b":{"docs":{},"u":{"docs":{},"r":{"docs":{},"g":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}}}},"b":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.010380622837370242}}}},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.02531645569620253},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.007785467128027681}},".":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"e":{"docs":{},"n":{"docs":{},"k":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"i":{"docs":{},"r":{"docs":{},"a":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}},"c":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}},"s":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}},"o":{"docs":{},"n":{"4":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.004846526655896607}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":3.3611111111111107},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266}}}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":3.3356589147286817}},"s":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}},"r":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.005654281098546042}}},"y":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"o":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0015151515151515152}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}}}}},"a":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726}}}},"e":{"docs":{},"s":{"docs":{},"—":{"docs":{},"q":{"docs":{},"u":{"docs":{},"o":{"docs":{},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}}},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{},"l":{"docs":{},"i":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"v":{"0":{"docs":{},".":{"8":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}},"docs":{}}},"1":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}},".":{"0":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"api/":{"ref":"api/","tf":0.047619047619047616}}},"docs":{}}},"2":{"docs":{},".":{"0":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"docs":{}}},"4":{"docs":{},".":{"4":{"docs":{},".":{"4":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}},"docs":{}}},"docs":{}}},"5":{"docs":{},".":{"1":{"docs":{},".":{"0":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}},"docs":{}}},"2":{"docs":{},".":{"0":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.046511627906976744}}},"1":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.023255813953488372}}},"docs":{}}},"3":{"docs":{},".":{"0":{"docs":{"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":0.06976744186046512}}},"docs":{}}},"docs":{}}},"8":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"a":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}},"b":{"docs":{},"l":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}},"r":{"docs":{},"t":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"b":{"docs":{},"o":{"docs":{},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.007352941176470588}}}}}},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},"n":{"docs":{"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}}}},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"t":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.007518796992481203}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.004},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0016155088852988692}}}}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0017301038062283738}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}}}}}},"u":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0032310177705977385},"contributors-guide/documentation/":{"ref":"contributors-guide/documentation/","tf":0.012658227848101266},"mojaloop-background/level-one-principles.html":{"ref":"mojaloop-background/level-one-principles.html","tf":0.008695652173913044}},"e":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"r":{"docs":{},"i":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},"c":{"docs":{},"c":{"docs":{},"i":{"docs":{},"n":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0048},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.006920415224913495}},"f":{"docs":{},"i":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.004793863854266539},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0025951557093425604}}},"y":{"docs":{},",":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/mojaloop-deployment/current-versions.html":{"ref":"contributors-guide/mojaloop-deployment/current-versions.html","tf":5.023255813953488},"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.014705882352941176},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":10.066176470588236},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576},"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}},";":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"i":{"docs":{},"n":{"docs":{},"g":{"8":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"b":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"s":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},")":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"a":{"docs":{},"l":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}}}}}},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},")":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}}}}},"n":{"docs":{},"y":{"docs":{},"a":{"docs":{"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0034602076124567475}}}}}},"m":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"o":{"docs":{},"l":{"docs":{},"u":{"docs":{},"m":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},".":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}},"x":{"docs":{},".":{"docs":{},"y":{"docs":{},".":{"docs":{},"z":{"docs":{},",":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}}}}}},"s":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}},"y":{"docs":{},"o":{"docs":{},"u":{"docs":{},"'":{"docs":{},"l":{"docs":{},"l":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017},"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},".":{"docs":{"contributors-guide/":{"ref":"contributors-guide/","tf":0.0028328611898017}}},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"a":{"docs":{},"m":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0022727272727272726},"mojaloop-background/core-scenarios.html":{"ref":"mojaloop-background/core-scenarios.html","tf":0.0008650519031141869}},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"s":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}},"s":{"docs":{},".":{"docs":{"contributors-guide/frequently-asked-questions.html":{"ref":"contributors-guide/frequently-asked-questions.html","tf":0.002325581395348837}}}}}},"#":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"#":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"&":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154},"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008},"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.007575757575757576},"mojaloop-background/":{"ref":"mojaloop-background/","tf":0.015037593984962405},"mojaloop-technical-overview/":{"ref":"mojaloop-technical-overview/","tf":0.005},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.011029411764705883}},"&":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},"/":{"docs":{"contributors-guide/standards/":{"ref":"contributors-guide/standards/","tf":0.022058823529411766},"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.016483516483516484},"mojaloop-technical-overview/mojaloop-components.html":{"ref":"mojaloop-technical-overview/mojaloop-components.html","tf":0.005235602094240838}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}},"/":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"/":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"/":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{},"p":{"docs":{"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.003676470588235294}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"/":{"1":{"2":{"3":{"4":{"5":{"6":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"/":{"docs":{},"f":{"docs":{},"u":{"docs":{},"l":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},"l":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"[":{"0":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},"3":{"docs":{},"]":{"docs":{},")":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"]":{"docs":{},"(":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"m":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"_":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"m":{"docs":{},"/":{"docs":{},"#":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"a":{"docs":{},"h":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"b":{"docs":{},"/":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"x":{"docs":{},"]":{"docs":{},"(":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"a":{"docs":{},"h":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"b":{"docs":{},"/":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"x":{"docs":{},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"/":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"s":{"docs":{},"/":{"docs":{},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"s":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"w":{"docs":{},"w":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"s":{"docs":{},"]":{"docs":{},"(":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"w":{"docs":{},"w":{"docs":{},"w":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"s":{"docs":{},")":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"_":{"docs":{},"_":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"`":{"docs":{},"`":{"docs":{},"`":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.003835091083413231}}}}}}}},"b":{"docs":{},"r":{"docs":{},"e":{"docs":{},"w":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}}}}},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"d":{"docs":{},"o":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0028763183125599234}}}}}}},"x":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077},"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}},"z":{"docs":{},"f":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}},".":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0008}},"i":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}}}},"m":{"docs":{},"l":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}},",":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"s":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}},"{":{"docs":{},"k":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}}}}},"t":{"docs":{},"b":{"docs":{},"d":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}}}},"|":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0019175455417066154}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{"contributors-guide/mojaloop-deployment/":{"ref":"contributors-guide/mojaloop-deployment/","tf":0.0009587727708533077}}}}}}},"z":{"docs":{"contributors-guide/standards/versioning.html":{"ref":"contributors-guide/standards/versioning.html","tf":0.007352941176470588}},"e":{"docs":{},"n":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0016}}}}}}},"]":{"docs":{},".":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"a":{"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0008077544426494346}}}},"$":{"1":{"0":{"0":{"docs":{},",":{"0":{"0":{"0":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{"contributors-guide/standards/creating-new-features.html":{"ref":"contributors-guide/standards/creating-new-features.html","tf":0.005494505494505495}}},"–":{"docs":{"contributors-guide/tools-and-technologies/":{"ref":"contributors-guide/tools-and-technologies/","tf":0.0104}}},".":{"4":{"5":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"docs":{}},"docs":{"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"ref":"contributors-guide/tools-and-technologies/pragmatic-rest.html","tf":0.0024232633279483036}}},">":{"docs":{},"=":{"docs":{"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"ref":"contributors-guide/tools-and-technologies/code-quality-metrics.html","tf":0.009259259259259259}}}},")":{"docs":{"contributors-guide/documentation/api-documentation.html":{"ref":"contributors-guide/documentation/api-documentation.html","tf":0.009900990099009901}}},"%":{"docs":{},")":{"docs":{},".":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}},"+":{"1":{"docs":{},".":{"2":{"0":{"6":{"docs":{},".":{"7":{"0":{"9":{"docs":{},".":{"3":{"1":{"0":{"0":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"9":{"1":{"docs":{},".":{"1":{"1":{"docs":{},".":{"4":{"1":{"0":{"0":{"docs":{},".":{"3":{"1":{"0":{"0":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"=":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.006060606060606061},"mojaloop-technical-overview/account-lookup-service.html":{"ref":"mojaloop-technical-overview/account-lookup-service.html","tf":0.007352941176470588}}},"§":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"§":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"©":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}},"“":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}}}}}}}},"†":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"†":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"‡":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}},"‡":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"…":{"docs":{"contributors-guide/documentation/documentation-style-guide.html":{"ref":"contributors-guide/documentation/documentation-style-guide.html","tf":0.0007575757575757576}}}},"length":4862},"corpusTokens":["\"","\"$\"","\"\\\"","\"_\"","\"c","\"completed.\"","\"count\"","\"default\"","\"documentation\"","\"good","\"in","\"m\"","\"pending,\"","\"prepar","\"project","\"project,\"","\"q\"","\"start\"","\"to.\"","#","##","$","$100,000","%).","&","&&","'freeze'","'mode","'mojaloop","'v5.1.1'","'vmx|svm'","(#","(####)","(###)","(##)).","($)","(&)","(2","(a","(agra),","(als)","(altern","(and","(asterisk)","(brazzaville,","(built","(code","(codecov,","(dagger)","(dfsp).","(dfsps)","(don't","(doubl","(e.g.","(e.g.).","(e.g.,","(features,","(fetch)","(footnotes,","(global","(high","(hyphen)","(i","(i.e.","(i.e.,","(ideal","(ilp)","(includ","(india)","(ing","(it'","(kyc)","(like","(ml","(not","(of","(optional)","(or","(oracles).","(oss)","(other","(p2p)","(pi)","(push)","(raster).","(refer","(repres","(represent","(safe)","(scalabl","(schema","(section","(semant","(semicolon","(size,","(stories)","(tail/follow)","(tbd)","(the","(through","(to","(u.s.).","(underscore)","(unit","(unless","(where","(which","(year)",")","*","**","***","*note","*recommend","+1.206.709.3100","+91.11.4100.3100",".",".45","/","/customers,","/customers/123456","/ect/host","/opt","/opt/postman/postman","/particip","/proc/cpuinfo","/transfers,","/transfers/:id/fulfil","/transfers/:id/fulfillment).","/usr/bin/postman","/usr/local/bin/minikub","0.8.","011","1","1.","1.1","1.2","1.5","10","10,","10.","123456.","127.0.0.1","13","16gb","18,","19980827,","1:","1st","2","2.","2.0","2.0.0,","2.1","2.1.1","2.1.2","2.2","2.2.1","2.3","2.3.1","2.4","2004","2007)._","2016.","2019,","22,","25","25%","25.","250","2616.7","2:","2nd","3.","3.1","3.2","30","32","3:","3rd","3x","4","4)","4.","4.0","4.1","4.2","4.4","40gb","4217","44","4:","4th","4x","5","5,000","5.","5.1,","5789,","5:","5th","6","6.2.1.2)","6.67/seat/month.","6:","6th","7.3.24","7.5.5","7.5.6","76","7813","7:","7th","8.0","80%","8601","8:","8th","9a","=",">=","[0","[3])","[https://docs.docker.com/install](https://docs.docker.com/install)","[https://docs.helm.sh/using_helm/#instal","[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)","[https://kubernetes.io/doc/tasks/tools/instal","[https://www.getpostman.com/apps](https://www.getpostman.com/apps)","___","```","```http","`brew","`central","`kubectl","`kubetail","`sudo","abbrevi","abbreviation.","abil","able.","abov","above.","abrupt","academ","acceler","accept","acceptable.","access","access,","accord","account","account.","accounts,","accounts.","accounts—mor","achiev","acquir","acronym","action","activ","actual","ad","adapt","adapter,","adapter.loc","adapter/health","adapter/servic","adapter:","adapters.","add","addit","addition,","address","adequ","adher","adject","adjective.","admin","administr","administration,","adopt","advanc","advanced,","advantag","advoc","afford","africa","ag","again","against","agenc","aggreg","agil","agnost","agnostic,","agnostic.","ago,","agra","agre","ahead","aim","al","alert","align","allianc","alloc","allow","alon","alone.","along","alphabet","alpin","alreadi","already,","also,","altern","although","alway","amazon","ambigu","amd","amd64","american.","amount","ampersand","analysts.","anathema","and,","and.","annan,","announc","anomalies.","anonymity,","anoth","another.","ant","anticip","anyon","anyth","anytim","anyway,","apach","apart","api","api's.","apis,","apis.","apostroph","appealing.","appear","appli","applic","applications,","applications.","approach","appropri","approv","approval,","approval.","apt","archi,","architects,","architectur","architecture.","architecture:","area","areas.).","aren’t","asid","ask","assess","asset","assign","assist","associ","associations,","assum","assur","asterisks)","async","attain","attempt","attend","attent","audienc","auditor","august","authent","author","autom","automat","avail","availability)","available.","avoid","away;","aws,","azur","azure.","b","babi","back","backend","background","backlog","backup","backup,","balanc","balance.","band","bank","bankers,","banks,","barr","barter","base","bash","basi","basic","basis.","becom","bed","befor","begin","behind","being:","below","below.","below;","benefici","benefit","besid","best","better","better.","between","beyond","big","bill","bill,","billion","billion.","bill—not","binari","bind","bios.","birthdat","bit","blacklist","blacklist.","block","blockchain","blueprint","bmgf.","board","board.","bold","bolded,","both","bought","box","branch","branch.","branch:","branchtyp","break","bridg","brief","bring","broken","broker","brother,","browser","browser.","btbwf","btbwf}","buffett","buffett).","bug","bug.","bugs,","bugs.","build","build,","building.","built","bulk","bullet","busi","business,","businesses,","button","buy","by:","c","cacoo,","call","callback","caller","camelcas","camelcase.","can't","capit","capitalcas","caption","caption,","caption.","captur","card","careful.","carefulli","carri","case","cases,","cases:","cash","catch","caus","cc","center.","central","central.centralledger.centralledg","central_ledg","centralledg","centric","certain","chain","chair","chairman","challeng","chanc","chang","change,","change.","changes.","channel.","charact","character.","chart","chart(s)","chart.","charts.","check","checkout","checkstyle.cod","chicago","child","children","children,","children.","chinese,","choic","choreograph","chose","chosen","chrome","chrome'","ci","ci/cd","circieci).","circl","circleci","circul","circumstances.","citat","city,","clarifi","clarity.","classic`","cleanli","clear","clear.","cli","cli`","click","clicks.","client","climat","climate),","clinic","clone","close","closed,","cloud","cloud,","club","cluster","cluster.","clusters,","clusters.","co","code","code,","code.","coding.","collabor","collect","collection),","collection,","collection.","colleg","colon","colon.","colons,","color","colorado,","colour","combin","come","comma","command","command.","commas)","commas,","comment","comment!)","commerci","commiss","commmit","common","commonli","commun","communication.","community.","compani","companies:","company.","compar","compatible.","competit","complet","complex","complexity,","complexity/method","compli","complianc","compon","component).","component,","components.","comprehens","comput","computer’","concept","conceptu","concluded.","conduct","config","configmap","configur","configuration,","configuration.","configuration.thi","configured,","confirm","conform","confus","confusion.","congo,","conjunct","connect","consid","consider","considered,","considered.","consist","consistently.","constantli","constraint","constraint:","construct","consum","consume,","contact","contain","containers,","content","context","context;","contexts;","continu","contract","contribut","contribute?","contributor","control","controls.","controls?","convenience,","convent","conventions.","convers","convert","coordin","copi","copyright","core","cornerston","corral","correct","correct,","correlation/persist","correspond","cost","could.","couldn’t","count","counter","countri","countries,","countries.","country'","country,","counts.","coupl","coupling,","cover","coverag","coverage)","coverage,","coveralls,","cow","cpu","creat","create)","creation","credit","crosslak","crowd","cumul","curl","currenc","current","currrent","custom","customer'","customer.","customers,","customers.","customizable)","da","dactyl","daemonset","dagger)","daggers)","daili","dash","dash.","dashboard","dashboard)","dashboard.yaml","dashboard:/proxy/#!/","dashboard;","dashes—thos","data","databas","databases:","date","date.","dates.","datetim","day","day.","db2,","dbas.","dbeaver","deal,","debug","decid","decim","decis","deeper","defacto","default","defer","defin","define,","definit","definition:","definitions.","del","delet","delete,","delete.","delimit","deliver","deliveri","demand","demo","demo`","deni","depart","depend","dependencies/method","depict","deploy","deploy,","deployment.","deployment;","deployments,","deposit","derby,","describ","descript","design","design).","design.","design:","desired.","desk.","desktop","details.","details:","detection,","determin","develop","developed,","developers,","developers.","development,","development.","devic","device.","devop","dfsp","dfsp,","dfsps,","diagram","diagrams,","dialogu","didn’t","diff","differ","difficult","digit","digital,","direct","directli","directori","directory,","directory.loc","disadvantag","disappear","discover,","discovery.","discuss","disdain","dissert","distanc","distract","distribut","divid","do","do,","do:","doc","docker","docker,","docker.","docs,","doctor","document","document,","document.","documentation,","documentation.","documentation.wher","documentation:","documents,","documents.","does,","doesn't","dollar","dollars,","domains:","don't","done","done,","don’t","doubl","doubt,","down","download","dozen","draw.io","drawing,","drawings.","drive","driven.","driver","driver=kvm","dropbox","drug","dure","dwolla,","e.g.","e.g.).","e.g.,","each","easi","easier","easiest","easili","easily.","echo","econom","economi","economy.","ecosystem.","edit","editable.","editor","educ","education.","effect","effici","efficiency,","eg.","egrep","elder","election,","element","elements.","else.","email","email.","email:","emerg","emergencies,","employ","employe","employees,","empty:","en","enabl","encouraged!)","end","endian","endnotes)","endnotes,","endow","endpoint","enforc","engin","enhanc","enhancements.","enough","ensur","enter","enterpris","entir","entiti","entrepreneurs,","entri","envelop","envelopes.","environ","environment,","environment.","environments,","environments.","epic","epics,","epics.","err_name_not_resolved`","error","error.","errors,","escap","eslint","eslint),","establish","etc","etc).","etc,","etc.","etcd","evalu","even","event","event.","everyon","everyone'","everyone.","everyth","ex","exact","exampl","example)","example,","example:","examples.","examples:","exce","exceed","except","exception:","exceptions.","exchang","execut","execution.","exist","exist?","exists.","expens","expenses.","expertis","expiri","explain","explor","expos","express","extend","extend,","extern","extra","extract","extran","f","f`","face.","facilit","fail","fair","famili","familiar","family'","family.","faq","farm","fascin","fast","faults,","favor","favorit","featur","feature/function","fee","feedback?","feel","fees.","few","field","field.","fielding'","fielding.","figur","figures,","file","file)","file.","final","financi","find","fine","fine.","fintech","firebird,","first","fix","fixes).","fixes,","fixes.","flag","flaki","flavor,","flexible.","flip","flow","focu","focus.","follow","following:","follows:","font","food","food.","footnot","footnotes,","for?","ford","forens","fork","fork:","form","formal","format","format.","format:","formats,","formats.5","forth","forward","found","found.","foundat","foundation'","foundation,","foundation.","foundation:","four","fourth","fowler","fowler,","fractions).","fractions—ref","framework","framework.","frances.","fraud","fraud.","fraudul","free","free)","free,","frequent","friend","friendli","fs","fsp","fulfil","fulfill\"","fulfill\",","fulfillment,","full","fulli","function","function:","functions:","fund","fundamental,","funds.","further","further,","further.","futur","gap","gate","gates","gates'","gates,","gates.","gateses'","gateses.","gateway.","gathering.","gave","gd,","gener","general,","genesi","geograph","gerund","get","gh,","gib","git","git,","gitbook","github","github,","github.","give","given","glad","global","go","goal","goal.","goals.","goat","goe","good","googl","govern","governments,","grade","graduat","grammat","grant","grant.","grantmaking.","grantmaking:","great","greater","green","grep","grew","group","group,","grow","guarante","gui","gui.","guid","guide)","guide/hardware.html","guidelin","guidelines.","guidelines.md)","guidelines](architectur","h.","h2","h3","h4","ha","half","hamim","hamin","hand","handl","handler","happen","happi","hard","harder","hardwar","hasn’t","hateoa","hateoas.","head","header","headers.","headings.","headline.","headquart","health","health,","healthi","heart","held","helm","helm)","helm:","helm](https://docs.helm.sh/using_helm/#instal","helm`","help","help?","helper","here","here.","high","highli","him.","hold","home","horizontally,","host","hotfix","hour","hourli","hous","however,","http","http,","http://","http://central","http://json.org/,","http://jsonpatch.com/,","http://localhost:8001/api/v1/namespaces/kub","http://martinfowler.com/articles/richardsonmaturitymodel.html,","http://ml","http://mojaloop.io/helm/repo/","http://semver.org/,","http://storage.googleapis.com/kubernet","http://www.w3.org/tr/1998/not","https://coreos.com/etcd/docs/latest/op","https://dl.pstmn.io/download/latest/linux64","https://forums.docker.com/","https://github.com//.git","https://github.com/johanhaleby/kubetail","https://github.com/mojaloop/.git","https://help.github.com/articles/fork","https://kubernetes.io/docs/setup/clust","https://kubernetes.io/docs/tasks/tools/instal","https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernet","https://raw.githubusercontent.com/mojaloop/postman/master/environments/mojalooplocal.postman_environment.json","https://raw.githubusercontent.com/mojaloop/postman/master/mojaloop.postman_collection.json","https://storage.googleapis.com/minikube/releases/latest/minikub","https://tools.ietf.org/html/rfc5789,","https://www.amazon.com/gp/product/0596805829,","https://www.gitbook.com/mojaloop","https://www.w3.org/protocols/rfc2616/rfc2616","hub","hub,","hub.","hub.loc","huge","human","hypermedia","hypervisor,","hypervisor:","hyphen","hyphen,","hyphen.","hyphens.","hyphens—compound","ibm","icon","id","id,","id.","idea","idempot","idempotent.","ident","identifi","identifier.","identifiers.","idiomatic,","iii","illeg","illegible.","illustr","ilp,","imag","image,","immedi","immediately.","impact","imper","implement","implementation)","impli","import","important.","important:","improv","improve.","in,","inappropri","includ","include:","including:","inclus","inclusion,","incom","increas","increasingli","increment","incub","incubator.","incur","indic","indirectli","individu","individual'","industri","influenc","info","inform","information)","information:","infrastructur","infrastructure,","infrastructure.","ingredi","ingress","init","initi","innov","innovative,","input","ins.","inspect","inspir","instal","install.","installations.","installed.","instanc","instance,","instance:","instant","instantaneously,","instead","institut","instructions:","instrumentation,","insur","integr","intend","intens","intent","interact","interconnect","interconnects.","interest","interfac","interface.","interfaces,","interfer","interledg","interledger.org","intern","internet","internet.","interop","interoper","introduc","introduct","introductori","invalid","investig","investigate,","investigation.","investments.","investments”","invit","invoic","involv","ip","ironic,","irrevocable;","is,","isn't","iso","isol","issu","issue\".","issue#","issue,","issuedescript","issues,","issues.","it'","it,","it.","it?","italic","item","itself,","it’","jahari","jahari.","java","javascript","javascript.","jcl","jenkin","jira","job","johannesburg","johnson","join","jointly.","jquery).","js","json","json,","json4","juggl","k8","kafka","kampala,","kani","kani'","kani.","keep","kept","key","kick","kilogram","kind","kms.local","know","known","kofi","kube","kubectl","kubectl)","kubectl,","kubectx","kubectx`","kuberctl](https://kubernetes.io/docs/tasks/tools/instal","kubernet","kubernetes.","kubetail","kvm","kyle","l1p","lack","languag","language.","languages,","larg","large/#s","larger","largest","last","later","latest","law","layer","layer,","layer.","layers,","layout.","lead","leader","lean.","ledger","ledger,","ledger.loc","ledger/health","ledger:","ledger’","left","legal","legislature,","leonard","less","let","letter","level","levelon","leveloneproject.org.","levels,","leverag","librari","licens","license.","life","light","lightweight","lightweight,","like","like.","limit","line","line.","link","link,","links/vers","linux","linux(ubuntu)","linux,","linux.","list","list,","list.","listed,","lists.","liter","littl","live","ln","lo","load","local","locat","log","logic","long","long.","longer","look","lookup","lookup,","loop","loop;","loos","lost","lot","low","lower","lowercas","lowercase,","lowercase.","lucidchart,","lunch","m","mac","mac.","mac:","machin","macos,","made","made.","main","maintain","maintain.","maintained,","mainten","maintenance.","major","major,","make","manag","management\"","management,","management.","mani","manner","manual","manual.","manufactur","map","march","mariadb,","mark","markdown","markdown,","market","market.","markets.","marks?","marri","martin","massiv","master","match","materi","materials,","matter","matur","maxim","mean","meaning,","meaning.","meant","meantim","meat","mechan","media","media,","mediat","medic","meet","meeting.","melinda","melinda,","melinda.","member","member.","memori","mention","menu","merchant","merchants,","merg","mermaid,","messag","metadata","method","methodolog","methods,","metric","metrics.","micro","microservic","microservice,","microservice.","microservices,","microservices.","microsoft","middl","million","minikub","minikube/","minim","minimum","minimum.","minor","minor,","misused.","ml","mobil","model","modeling,","modern","modifi","modified.","modifiers,","modules,","modusbox","modusbox,","moja","moja.*","mojallop","mojaloop","mojaloop'","mojaloop,","mojaloop.","mojaloop.postman_collection.json","mojaloop/centralledg","mojaloop/mojaloop","mojaloop?","mojalooplocal.postman_environment.json","mojaloop’","money","money).","money.","monitor","monitor,","monopoli","month","month.","more","more.","morn","move","mr.","ms","much","mule","mulece,","multi","multipl","mwallet","mysql","mysql,","mysqlworkbench","m—to","n","nairobi","name","name,","name.","name=moja","names,","namespac","namespace=demo","namespace=kub","naming,","nation","nativ","navig","nd","near","necessari","necessit","need","needed.","needed?","needlessli","needs.","net","net:","network","network,","network.","networks,","never","new","next","nginx","ngo","nicknam","nikisha","node","node)","node):","node.js,","nodej","nodes,","non","nongovernmental:","nonprofit:","normal","northern","not?","note","note:","noth","notic","notif","notifi","notifier:","notion","noun","noun,","noun.","now","npm","nullipot","number","number).","number.","numbers,","numer","numeral.","n—with","o","object","object.","obviou","of:","offer","offering,","offic","office.","offices,","often,","old","oldest","omit","on","on).","on.","on:","on?","onboard","onc","ones,","ongo","onlin","open","open,","openapi","oper","operation'","operations.","opportun","optim","option","optional(us","optional,","or.","oracl","oracle'","oracle,","orchestr","order","order,","ordin","organ","origin","os","oss","oss)","other","other.","out","out,","out.","outdat","outgo","outgrew","outlin","output","over","over.","overal","overall.","overhead","overview","overview.","overview:","own","own,","own.","owned.","owner","p1","packag","package.json.","page","paid","paid.","pair","pan),","pandoc,","paper","parallel","parallelism,","paramet","parenthes","parentheses.","parenthet","parochial.","pars","part","part,","part.","parti","particip","participants,","particp","particular","particularli","partner","partnership","partyidentifi","partyidtyp","pass","patch","patch,","patch3","patch6).","path","path.","pathfind","pattern","pattern.","pay","paycheck","payment","payment.","payments.","pdf","pdf,","pdf.","peace.","peer","pend","peopl","people,","people.","per","percent","percentag","percentages,","percona","perform","period","periods)","periods,","persist","persistent,","person","person'","person.","pesa,","phase","phase.","philosophi","phone","phone.","phones,","phones.","photo","photo'","photograph","photographer.","phrase","phrase.","phrases,","pi","pick","picked.","pictur","pin","pipelin","place","placement","places.","plain","plan","plane","plane:","plantain","plantains.","plantuml,","platform","platform,","platform.","platforms,","play","players.","pleas","please,","plenti","plu","plural","plural:","png","po","pod","pods.","point","point.","points,","polici","poor","poor.","popular","portabl","portal.","portfolio","portion","posit","possessive:","possibl","possible,","possible.","post","postgresql,","postgresql.","postman","postman.tar.gz","postsecondary:","potenti","poverti","poverty.","power","pr","practic","practice,","practice,2","pragmat","pre","preced","precis","predefin","predict","predictable,","prefer","prefer.","prefix","prem.","premis","prepar","prerequisit","present","presentation,","presidenti","press","prevent","previou","price","price,","price.","primari","primarili","principl","principles,","principles.","print","privat","probabl","problem","problem.","procedur","proceeding,","process","process.","processor","processor:","produc","product","profici","profil","program","program),","program,","program.","program:","programmers,","programs:","program…","progress,\"","progress.","progress..","progress...","project","project,","project.","project;","projects.","prompt","proof","propag","proper","proport","propos","proscript","protect","protocol","prototype.","provid","provided,","provider,","provider.","providers,","providers.","provis","proxi","public","publications,","publications.","publish","pull","punctuat","punctuation,","purchas","pure","purg","purity.","purpos","push","put","qcon","qualiti","queri","query.","question","question.","questions,","quickli","quot","quotat","quotes—quot","quoting,","r&d","rais","ram,","raml","raml.","rancher","rang","ranges.","rapidli","raster","rate","re","reach","read","read,","readabl","reader","reader'","readi","reading,","real","realli","reason","receipt","receiv","received.","recent","recommend","record","redefin","reduc","reduct","refer","referenc","reference.","referenced1","references.","refin","regard","regardless","regist","registri","registry.","registry.loc","regress","regression.","regulatori","regulators.","reinforc","relat","relationship","releas","release,","release.","release?","releases.","relev","reli","reliabl","remarks.","remot","remote:","remotes:","remov","remove/sanit","reorder","replac","replicaset","repo","repo)","repo.","repo/","repo:","repo=http://mojaloop.io/helm/repo","report","report.","repos.","repositori","repositories,","repositories.","repository.","repository:","repres","represent","repro","request","request.","requir","required/opt","requirements,","requirements.","requirements:","research,","reserved.","resili","resilience,","resolv","resourc","resource,","resource.","resources.","responces.","respond","respons","responses.","responsibility.","rest","rest:","restaur","restrict","result","retriev","return","return,","returned,","revers","review","review,","revis","revolut","rfc","richardson","right","rippl","ripple,","risk","risk,","rm","roadmap","roadmap,","roadmap.","robust,","roles,","roman","room","rout","routing/config","roy","rule","rule.","rules,","rules.","rules/config.","run","run.","run:","runnabl","running.","running:","runtim","s","s.","safe","safe,","sale","salem","salem'","salmonella","same","sampl","satisfi","save","scalabl","scale","scale,","scale.","scare","scenario","scenarios,","scenarios.","schema","scheme","scheme.","scientif","scope","score","screen","script","scripts,","seamless,","search","seattl","sec10.html","second","seconds,","secret","secrets/kubernet","section","sectors,","secur","secure,","security,","see","see.","seem","segment","segreg","select","seller","semant","semicolons.","semver","send","sens","sense.","sent","sentenc","sentence,","sentence.","sentences.","separ","separate.","sequenc","seri","serial","serv","server","server,","server.","servic","service,","service/adapt","services.","services.containers.api.image.tag=v5.1.1","services/adapt","services—loc","services—particularli","set","set,","settl","settlement","settlement,","settlement:","settlements.","settlements.loc","setup","setup.","setup:","sever","share","share.","she'","shifted.","shill","shop","show","shown","shut","side","sidecar.loc","sign)","sign.","signatori","signific","signs)","similar","similar).","similiar","simpl","simpli","simplifi","singl","singular","site","size","size:","sketchboard.io,","slack","slack.","slightli","sling.","small","smart","smiling,","snake_cas","snake_case.","snap","snapshot","softwar","software,","software.","solut","solution.","solv","someon","someone'","someth","son","son.","sonarqub","sourc","source?","sources.","sourcetre","sourcetree'","southern","space","space.","spark","speak","spec)","spec.","specialist","specialized,","specif","specifi","specifically,","specification'","specification.","specifications)","specified.","speech","speed","spell","spelling:","spend","split","sponsor","spread","spreadsheet","spring.","sprint","sprint5.1","sprints,","sql","sql,","sqlite,","sr.","sr.,","stable/nginx","staff","stand","standard","standard,","standards,","standards.","standing,","start","started,","started.","startup","state","state.","state:","statefulset","statement.","states)","states).","states,","states.","statu","step","step.","steps.","still","stop","storag","storage/manag","store","store,","store.","stori","stories,","stories.","straightforward","straightforward.","strategi","stream","stream.","strict","string","string.","strings)","strong","strongli","structur","studio","style","style.","stylebook.","sub","subhead","subject","submit","subnetworks.","subsect","subsequ","subset","substanti","success","successfulli","such","sudo","sudo.","suffix","suffixes,","suit","summar","summari","superscript","supervisor","support","supported?","sure","suspect","suspici","svg","swagger","swagger,","switch","switch.loc","switchboard,","sybase,","symbols.","symbols:","sync","sync'","sync.","synchronis","syntax","system","system,","system.","system/services/https:kubernet","systems)","systems,","systems.","tab.","tabl","tables.","tadeo","tag","take","taken","talk.","tangibl","tar","target","task.","tbc","team","team.","teams.","tech","technic","technolog","technologies.","tell","templat","temporari","teradata,","term","terminal;","test","test,","test.","testabl","testing,","tests,","tests.","text","thank","that'","that,","that.","them,","them.","theoret","there'","thereafter.","therefor","they'r","thing","thing.","third","this,","those","though","though,","thought","thought.","threat","three","through","throughout","thu","thus,","ti","tick","tier","tiers/risk","tiller","tiller...","time","time,","time.","timelin","timeout","times.","titl","to\"","to,","to.","to;","today","today.","togeth","token","token,","token.","told","tool","tool)","tool,","tool.","tools,","tools.","top","total","track","track,","trademark","tradit","transact","transaction).","transaction.","transaction;","transactions,","transactions.","transfer","transfer)","transfer.","transfer:","transfers.","translat","translations,","transport","transportation.","travel","treat","tri","trial","trigger","trump","trust","trust.","ts","turn","turnov","two","type","typhi","typic","u.s.","ubuntu","ubuntu:","uganda","uganda.","ui","unapprov","unavail","unbanked.","uncertain,","uncommon","under","underli","underlin","underscor","understand","understanding,","understanding.","uneasy.","unifi","union","uniqu","unit","unit,","unit.","univers","university,","unless","until","up","up.","updat","update:","upgrad","upgraded,","upon","upstream","urgent","uri","uri.","uris,","uris.","url","us","usag","use,","use.","used.","user","users,","users.","using,","usp","ussd","util","utilis","v","v0.8","v0.8,","v1","v1.0","v2.0","v4.4.4","v5.1.0","v5.2.0","v5.2.1","v5.3.0","v8","vaccin","valid","validation,","valu","value.","values,","variabl","variables.","vcpus,","vector","vector)","veloc","venya","verb","verb)","verbal","verbs.","veri","verifi","verify,","version","version,","version.","version;","versioning,","versioning.","versioning8","vertic","via","viabl","view","viewabl","viewer.","violat","virtual","virtualbox","virtualbox.","visibl","visio,","vision","visit","visits.","visual","vm","volum","volumes/storage.","voted.","vs","vt","vx.y.z,","w3c","wait","wallet","wallets,","want","want.","wanted.","warren","washington","waterfal","way","way.","way:","ways.","ways.)","ways:","web","website:","week","week'","week.","weekli","weekly,","weight","well","well,","well.","went","we’d","wget","what'","whatev","whenev","whenver","whether","white","who'","whole","wide","width","wife","wiki","william","window","window.","windows,","windows.","wire","with.","withdraw","within","without","won't","word","word,","words,","wordy.","work","work.","work?","workbench","worker","workers.","works,","world","world'","world,","worri","write","written","wso2","www.gatesfoundation.org","wysiwyg","x","x.","x.i","xml","xml,","xml.","xsd","xzf","yaml","year","year.","years.","yes.","you'll","you'r","you.","yourself","z","z].","za","zenhub","{kubernet","{tbd","|","|grep","§","§§","©","–","“program","†","††","‡","‡‡","…"],"pipeline":["stopWordFilter","stemmer"]},"store":{"./":{"url":"./","title":"Mojaloop Overview","keywords":"","body":"Mojaloop Overview\nMojaloop is open source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.\nThe basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers (DFSPs) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.\n\nOur model addresses these issues in several key ways:\n\nA set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.\nA standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.\nComplete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.\n\nThe intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.\n"},"contributors-guide/":{"url":"contributors-guide/","title":"Contributors Guide","keywords":"","body":"Contributors Guide\nHow do I contribute?\n* Review the Mojaloop Deployment Guide\n* Get familiar with our Standards on contributing to this project\n* View the project board and work on your good first issue\n* Review the Roadmap and contribute to future opportunities\nWhat work is needed?\nWork is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with \"good first issue\". In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.\nThere's a roadmap that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.\nIn general, we are looking for example implementations and bug fixes, and project enhancements.\nWhere do I get help?\nJoin the Mojaloop Slack Discussions to connect with other developers.\nAlso checkout the FAQ\nWhat is the current release?\nSee the Mojaloop Slack Announcements to find out information on the latest release.\nWhat's here and what's not\nThis is free code provided under an Apache 2.0 license.\nThe code is released with an Apache 2.0 license but the Specification documents under the 'mojaloop-specification' documents are published with CC BY-ND 4.0 License\nWe don't provide production servers to run it on. That's up to you. You are free (and encouraged!) to clone these repositories, participate in the community of developers, and contribute back to the code.\nWe are not trying to replace any mobile wallet or financial providers. We provide code to link together new and existing financial providers using a common scheme. There are central services for identifying a customer's provider, quoting, fulfillment, deferred net settlement, and shared fraud management. Each provider can take advantage of these services to send and receive money with others on the system and there's no cost to them to onboard new providers. We provide code for a simple example mobile money provider to show how integration can be done, but our example DFSP is not meant to be a production mobile money provider.\nRelated Projects\nThe Interledger Protocol Suite (ILP) is an open and secure standard that enables DFSPs to settle payments with minimal counter-party risk (the risk you incur when someone else is holding your money). With ILP, you can transact across different systems with no chance that someone in the middle disappears with your money. Mojaloop uses the Interledger Protocol Suite for the clearing layer. For an overview of how it works, see the Clearing Architecture Documentation.Where to I send bugs, questions, and feedback?\nUPDATE: For bugs, see Reporting bugs.\nTypes of Contributors\nThere are three types of contributors that we are targeting for this phase of the Mojaloop project.\nDevelopers or General Contributors\nThese individuals are those that want to start contributing to the Mojaloop community. This could be a developer or quality assurance person that wants to write new code or fix a bug. This could also be a business, compliance or risk specialist that wants to help provide rules, write documentation or participate in requirements gathering.\nHub Operators\nTypically these or organizations or individuals or government agencies that are interested in setting up their own Mojaloop Switch to become part of the ecosystem.\nImplementation Teams\nImplementation teams can assist banks, government offices, mobile operators or credit unions in deploying Mojaloop.\n"},"contributors-guide/mojaloop-deployment/":{"url":"contributors-guide/mojaloop-deployment/","title":"Mojaloop Deployment","keywords":"","body":"Mojaloop Deployment\nDeployment and Setup Introduction\nThis document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.\n\nSoftware List\nDeployment Recommendations\nLocal Deployment and Testing Tools\n\n\nDeployment\nKubernetes\nKubernetes Installation with Docker\nKubernetes environment setup\n\n\nHelm\nHelm Chart Installation\n\n\nPostman\nInstalling Postman\nSetup Postman\n\n\n\n\nErrors During Setup\n\n1 Software List\nBefore proceeding, please have a look at Deployment Recommendations to insure the minimum resource requirements are available.\n1.1 Deployment Recommendations\nThis provides environment resource recommendations with a view of the infrastructure architecture.\nResources Requirements:\n\nControl Plane (i.e. Master Node)\n```http request\nhttps://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components\n```\n\n3x Master Nodes for future node scaling and HA (High Availability)\n\n\nETCd Plane:\n```http request\nhttps://coreos.com/etcd/docs/latest/op-guide/hardware.html\n```\n\n3x ETCd nodes for HA (High Availability)\n\n\nCompute Plane (i.e. Worker Node):\nTBC once load testing has been concluded. However the current general *recommended size:\n\n3x Worker nodes, each being:\n4x vCPUs, 16GB of RAM, and 40gb storage\n\n\n\n*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.\n\n\n\n1.2 Local Deployment and Testing Tools\n1.2 Local Deployment and Testing Tools\nThe tool set to be deployed as part of the deployment process.\n\n \n \n Tool\n Required/Optional\n Description\n Install Info\n \n \n \n \n Docker\n Required\n \n Docker Engine and CLI Client\n Local Kubernetes single node cluster\n \n [https://docs.docker.com/install](https://docs.docker.com/install)\n \n \n Kubectl\n Required\n \n Kubernetes CLI for Kubernetes Management\n Note Docker installs this part of Kubernetes install\n \n \n [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)\n Docker Kubernetes Install (as per this guide)\n Mac: `brew install kubernetes-cli`\n Ubuntu: `sudo snap install kubectl --classic`\n \n \n \n Kubectx\n Optional(useful tool)\n \n Kubernetes CLI for Kubernetes Context Management Helper\n Note Docker installs this as part of Kubernetes install\n \n \n [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)\n Mac: `brew install kubectx`\n Ubuntu: `sudo apt install kubectx`\n \n \n \n Kubetail\n Optional(useful tool)\n \n Bash script that enables you to aggregate (tail/follow) logs from multiple\n pods into one stream. This is the same as running `kubectl logs -f` but\n for multiple pods.\n Example usage `kubetail moja.* -n demo`\n \n https://github.com/johanhaleby/kubetail\n \n \n Helm\n Required\n \n Helm helps you manage Kubernetes applications\n Helm charts help you define, install and upgrade even the most complex\n Kubernetes application\n \n \n [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)\n Mac: `brew install kubernetes-helm`\n Ubuntu: `sudo snap install helm --classic`\n \n \n \n Postman\n Required\n Postman is a Google Chrome application for the interacting with HTTP API's.\n It presents you with a friendly GUI for the construction requests and reading\n responces.\n [https://www.getpostman.com/apps](https://www.getpostman.com/apps)\n \n \n## 2 Deployment\nThis section will guide the reader through the deployment process to setup Kubernetes within Docker.\n2.1 Kubernetes\nIf you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. Kubernetes Concepts is a good place to start and will provide an overview.\nThe following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;\n\nDeployment\nPod\nReplicaSets\nService\nIngress\nStatefulSet\nDaemonSet\nIngress Controller\nConfigMap\nSecret\n\n2.1.1 Kubernetes Installation with Docker\nUbuntu\nNote - Kubernetes with Docker is currently not available on Linux(Ubuntu) - please refer to; https://forums.docker.com/\nWe recommend installing a minikube local environment by follow the steps below;\nWith reference to https://kubernetes.io/docs/tasks/tools/install-minikube/\n\nVT-x or AMD-v virtualization must be enabled in your computer’s BIOS. To check this on Linux run the following and verify the output is non-empty:\negrep --color 'vmx|svm' /proc/cpuinfo\n\n\nInstall a Hypervisor:\n\nKVM - Recommended Linux driver\n\nor\n\nVirtualBox\n\n\nkubectl should already be installed. To verify, check the version;\nkubectl version\n\nIf an error is returned, please refer to Local Deployment and Testing Tools.\n\nminikube installation\ncurl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube\n\n\nStart a cluster by running:\nNote - if you have install KVM as the Hypervisor, you might need to include --vm-driver=KVM in the startup command. The default is to startup with VirtualBox.\nminikube start\n\nOnce successfully started, you can interact with your cluster using kubectl, just like any other Kubernetes cluster.\n\nLunching the Minikube Dashboard\nThe minikube dashboard can be opened and access via your default browser.\nminikube dashboard\n\nContinue from the Config Helm CLI and install Helm Tiller... section below.\n\n\nMac\nTo install Kubernetes with Docker, follow the steps below;\n\nClick on the Docker icon on the status barr\nSelect Preferences\nGo to Advanced\nIncrease the CPU allocation to at least 4\nIncrease the Memory allocation to at least 8.0 GiB\n\n\n\n\n\n\n\nGo to Kubernetes\nSelect Enable Kubernetes tick box\nMake sure Kubernetes is selected\nClick Apply\nClick Install on the confirmation tab. \nThe option is available to wait for completion or run as a background task.\n\n\n\n\n2.1.2 Kubernetes environment setup:\nThe following are all command line executables specifically for Mac. 1. List the current Kubernetes context;\n kubectl config get-contexts\n\nor\n kubectx\n\n\nChange your Contexts;\nkubectl config use-contexts\n\nor\nkubectx docker-for-desktop\n\n\nInstall Kubernetes Dashboard roles, services & deployment. (Alternative install for Dashboard using Helm: kubernetes-dashboard)\nIMPORTANT: Always verify current kubernetes-dashboard yaml file for the below create command.\nkubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml\n\n\nVerify Kubernetes Dashboard;\nkubectl get pod --namespace=kube-system |grep dashboard\n\n\nStart proxy for local UI in new terminal;\nkubectl proxy ui\n\n\nOpen URI in default browser\nhttp://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/\n\nSelect Token. Generate a token to use there by:\nkubectl -n kube-system get secrets | grep dashboard-token\n\nThe token to use is shown on the last line of the output of that command.\nkubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf\n\nThe {kubernetes-dashboard-token-btbwf} is retrieved from the output in the previous step. For more information on generating the token, follow the Authentication link in the window.\n\n\n\nUbuntu continue from here\n\nConfig Helm CLI and install Helm Tiller on K8s cluster\nhelm init\n\n\nValidate Helm Tiller is up and running\nkubectl -n kube-system get po | grep tiller\n\n\nAdd mojaloop repo to your Helm config (optional)\nhelm repo add mojaloop http://mojaloop.io/helm/repo/\n\n\nAdd the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts\nhelm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator\n\n\nUpdate helm repositories\nhelm repro update\n\n\nInstall nginx-ingress for load balancing & external access\nhelm --namespace kube-public install stable/nginx-ingress\n\n\nAdd the following to your /ect/hosts\n127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local\n\n\nTest system health in your browser after installation\nml-api-adapter health test\n```http request\nhttp://ml-api-adapter/health\n___\ncentral-ledger health test\n```http request\nhttp://central-ledger/health\n\n\n\n2.2 Helm\nPlease review Mojaloop Helm Chart to understand the relationships between the deployed Mojaloop helm charts.\n2.2.1 Helm Chart Installation\nThis section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see Helm Chart Deployment\n\nLets start by listing the current helm charts deployed\nhelm list\n\n\nIf you would like to delete a deployed helm chart\nhelm del --purge moja\n\nNote: for demo purposes we are using moja as the chart name. Please verify and use the correct chart name from the listing above.\n\nTo install Mojaloop chart(s)\nUbuntu - It might be required to execute helm install and helm upgrade under sudo.\nTo install the full mojaloop project\nhelm install --namespace=demo --name=moja mojaloop/mojaloop\n\nAlternative directly from the repository:\nhelm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop\n\nor install a specific mojaloop chart eg. Central-ledger\nhelm install --namespace=demo --name=moja mojaloop/centralledger\n\nAlternative directly from the repository:\nhelm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger\n\n\nTo upgrade Mojaloop chart(s)\nNote: 'v5.1.1' is an example value.\nhelm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop\n\n\nTo upgrade a specific chart eg. Central-ledger\nhelm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger\n\n\n\n2.3 Postman\nPostman is used to send requests and receive responses.\n2.3.1 Installing Postman\nPlease, follow these instructions: Get Postman\nAlternatively on Ubuntu you may run:\nwget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz\nsudo tar -xzf postman.tar.gz -C /opt\nrm postman.tar.gz\nsudo ln -s /opt/Postman/Postman /usr/bin/postman\n\n2.3.1 Setup Postman\n\nDownload this file https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json\nOpen Postman\nClick Import and then Import File\nSelect the Mojaloop.postman_collection.json file you downloaded\nYou'll now need to import environment variables. For local testing, download this file https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json\nClick Import and then Import File\nSelect the MojaloopLocal.postman_environment.json file you downloaded\nIn the imported collection, navigate to the central_ledger directory \n\n2.4 Errors On Setup\n\n`central-ledger’s server IP address could not be found.\nERR_NAME_NOT_RESOLVED`\nResolved by:\n\nVerify that a helm chart(s) was installed by executing\nhelm list\n\nIf the helm charts are not listed, see the Helm Chart Installation section to install a chart.\n\n\n\n\n"},"contributors-guide/mojaloop-deployment/current-versions.html":{"url":"contributors-guide/mojaloop-deployment/current-versions.html","title":"Current Version","keywords":"","body":"Current Version\nA new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added\nAt of March 6th 2019, the active releases for core central services are as below\n\nhelm: v5.2.0\ncentral-ledger: v5.3.0\nml-api-adapter: v5.2.1\ncentral-settlement: v5.2.0\ncentral-event-processor: v5.3.0\nemail-notifier: v5.3.0\n\n"},"contributors-guide/standards/":{"url":"contributors-guide/standards/","title":"Standards","keywords":"","body":"Standards\nStandards\nStandards for adopting an Open Source contribution into Mojaloop\nThis document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.\nPrerequisites\n\nThe contribution should be in-line with the LevelOne Principles\nBasic guidelines regarding status of the contribution (Code-base / Standards / Designs / Specifications)\nBasic documentation to get started\n\nGuidelines regarding adoption\n\nCreate a private repo on the Mojaloop GitHub organization\nHave a sub-team of the DA take a look to make sure its portable (to OSS) - aligns with L1P principles, etc, and ensure design is in line with standards\nCheck Licensing\nAssess Performance impact\nCreate action items (stories) to update naming, remove/sanitize any items that are not generic\nConfiguration for 'modes of operation'\nEnable CI/CD pipeline\n\nVersioning\nReview the information on versioning for Mojaloop.\nCreating new Features\nProcess for creating new features and branches in Mojaloop.\nPull Request Process\nIt's a good idea to ask about major changes on Slack. Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the Level One Principles\nCode of conduct\nWe use a standard developer code of conduct\nLicensing\nSee License policy\n \n"},"contributors-guide/standards/versioning.html":{"url":"contributors-guide/standards/versioning.html","title":"Versioning","keywords":"","body":"Versioning\nVersioning of releases made for core Switch services\nThis document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.\nVersioning Strategy\n\nThe current versioning system is inspired by the Semantic Versioning numbering system for releases.\nHowever, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment (PI) and Sprint numbers\nFor example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 (of PI-4)\n\nCurrent Version\nThe currrent version information for Mojaloop can be found here.\nNotes\n\nA new release for helm repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made (features, bug-fixes).\nHowever, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.\n\n \n"},"contributors-guide/standards/creating-new-features.html":{"url":"contributors-guide/standards/creating-new-features.html","title":"Creating new Features","keywords":"","body":"Creating new Features\nFork\nFork the Mojaloop repository into your own personal space. Ensure that you keep the master branch in sync.\nRefer to the following documentation for more information: https://help.github.com/articles/fork-a-repo/\n\nClone repo using Git Fork button (refer to the above documentation for more information)\nClone your forked repo: git clone https://github.com//.git\nSynchronise your forked repo with Mojaloop\nAdd a new upstream repo for Mojaloop $ git remote add mojaloop https://github.com/mojaloop/.git\nYou should now see that you have two remotes:\n git remote -v\n origin https://github.com//.git (fetch)\n origin https://github.com//.git (push)\n mojaloop https://github.com/mojaloop/.git (fetch)\n mojaloop https://github.com/mojaloop/.git (push)\n\n\nTo sync to your current branch: git pull mojaloop This will merge any changes from Mojaloop's repo into your forked repo.\n\nPush the changes back to your remote fork: git push origin \n\nCreating a Branch\nCreate a new branch from the master branch with the following format: / where issue# can be attained from the Github issue, and the issueDescription is the formatted in CamelCase.\n\nCreate and checkout the branch: git checkout -b / \nPush the branch to your remote: git push origin /\n\nWhere can be one of the following:\n\n\n\nbranchType\nDescription\n\n\n\n\nfeature\nAny new or maintenance features that are in active development.\n\n\nhotfix\nA hotfix branch is for any urgent fixes.\n\n\nrelease\nA release branch containing a snapshot of a release.\n\n\nbackup\nA temporary backup branch. Used normally during repo maintenance.\n\n\n\nMerge into Mojaloop Repo\nOnce the feature is completed create a PR from your Feature Branch into the master branch on the Mojaloop repository (not your personal repo) for approval, and check validations (e.g. unit tests, code coverage, etc executed via CircieCI).\n"},"contributors-guide/tools-and-technologies/":{"url":"contributors-guide/tools-and-technologies/","title":"Tools and Technologies","keywords":"","body":"Tools and Technologies\nHere we document the reasoning behind certain tools, technology and process choices for Mojaloop. We also have included the recommendation links/versions for each of these tools.\nTOOL CHOICES\n\nAPI Development\nRAML and Swagger 2.0 is leveraged for API development.\nWSO2 offers an enterprise platform for integrating APIs, applications, and web services—locally and across the Internet. It also provides Mojaloop with a Security Layer, and Development Portal.\n\n\nCircle-CI - This tool is used for continuous build and continuous deployment. We needed an online continuous build and testing system that can work with many small projects and a distributed team. Jenkins was considered, but it requires hosting a server and a lot of configuration. CircleCI allowed for a no host solution that could be started with no cost and very limited configuration. We thought we might start with CircleCI and move off later if we outgrew it, but that hasn’t been needed.\nDactyl – We need to be able to print the online documentation. While it’s possible to print markdown files directly one at a time, we’d like to put the files into set of final PDF documents, where one page might end up in more than one final manual. Dactyl is a maintained open source conversion tool that converts between markdown and PDF. We originally tried Pandoc, but it had bugs with converting tables. Dactyl fixes that and is much more flexible.\nDBeaver - DBeaver is a free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports all popular databases: MySQL, PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Derby, etc.\nDocker - The Docker container engine creates and runs the Docker container from the Docker image file.\nDocker hub is used to link, build, test and push the Mojaloop code repositories. We needed to support both local and cloud execution. We have many small microservices that have very simple specific configurations and requirements. The easiest way to guarantee that the service works the same way in every environment from local development, to cloud, to hosted production is to put each microservice in a Docker container along with all the prerequisites it needs to run. The container becomes a secure, closed, pre-configured, runnable unit.\nDraw.io – We need to create pictures for our documents and architecture diagrams using an (ideally free) open source friendly tool, that is platform agnostic, supports vector and raster formats, allows WYSIWYG drawing, works with markdown, and is easy to use. We looked at many tools including: Visio, Mermaid, PlantUML, Sketchboard.io, LucidChart, Cacoo, Archi, and Google Drawings. Draw.io scored at the top for our needs. It’s free, maintained, easy to use, produces our formats, integrates with DropBox and GitHub, and platform agnostic. In order to save our diagrams, we have to save two copies – one in SVG (scalable vector) format and the other in PNG (raster). We use the PNG format within the docs since it can be viewed directly in GitHub. The SVG is used as the master copy as it is editable.\nESLint - Within JavaScript code, we use ESLint as a code style guide and style enforcement tool.\nGitHub – GitHub is a widely-used source code repository service, based on git, the standard source code version control system for open source projects. So the decision to use GitHub was straightforward. We create a story every time for integration work. Create bugs for any issues. Ensure all stories are tracked throughout the pipeline to ensure reliable metrics.\nHelm - The Helm package manager for Kubernetes provides templatized deployments and configurations and allow for overall complexity management.\nKafka - This technology is leveraged to support Mojaloop’s demand for a high velocity and high volume data messaging but keep our hardware requirements minimum.\nJavaScript - The Mojaloop application is primarily written in JavaScript.\nKubectl - This is a command line interface for running commands against Kubernetes clusters.\nKubernetes - This enterprise tool provides an extraction layer, infrastructure management and a container-orchestration system.\nMarkdown – Documentation is a deliverable for this project, just like the code, and so we want to treat it like the code in terms of versioning, review, check in, and tracking changes. We also want the documentation to be easily viewable online without constantly opening a viewer. GitHub has a built-in format called Markdown which solves this well. The same files work for the Wiki and the documents. They can be reviewed with the check in using the same tools and viewed directly in GitHub. We considered Google Docs, Word and PDF, but these binary formats aren’t easily diff-able. A disadvantage is that markdown only allows simple formatting – no complex tables or font changes - but this should be fine when our main purpose is clarity.\nMySQLWorkbench – MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. MySQL Workbench is available on Windows, Linux and Mac OS X.\nNodeJS - This development tool is a JavaScript runtime built on Chrome's V8 JavaScript engine that runs Mojaloop. NodeJS is designed to create simple microservices and it has a huge set of open source libraries available. Node performance is fine and while Node components don’t scale vertically a great deal, but we plan to scale horizontally, which it does fine. The original Interledger code was written in NodeJS as was the level one prototype. Most teams used Node already, so this made sense as a language. Within NodeJS code, we use Standard as a code style guide and to enforce code style.\nNPM - NPM is the package manager for Mojaloop since JavaScript is the default programming language.\nPercona for MySQL - These tools are leveraged as a relational database management system to ensure high performance and enterprise-grade functionality for the Mojaloop system. We needed a SQL backend that is open source friendly and can scale in a production environment. Thus, we chose MySQL, an open-source relational database management system.\nPostman is a Google Chrome application for interacting with HTTP APIs. It presents you with a friendly GUI for constructing requests and reading responses.\nRancher 2.0 - The Infrastructure management, provisioning and monitoring is provided by Rancher 2.0 which is an enterprise Kubernetes platform that manage Kubernetes deployments, clusters, on cloud & on-prem. Rancher makes it easy for DevOps teams to test, deploy and manage the Mojaloop system no matter where it is running.\nSlack – Slack is used for internal team communication. This was largely picked because several team already used it and liked it as a lightweight approach compared to email.\nSonarQube – We need an online dashboard of code quality (size, complexity, issues, and coverage) that can aggregate the code from all the repos. We looked at several online services (CodeCov, Coveralls, and Code Climate), but most couldn’t do complexity or even number of lines of code. Code Climate has limited complexity (through ESLint), but costs 6.67/seat/month. SonarQube is free, though it required us to setup and maintain our own server. It gave the P1 features we wanted.\nSourceTree – Sourcetree simplifies how you interact with your Git repositories so you can focus on coding. Visualize and manage your repositories through Sourcetree's simple Git GUI.\nStories On Board - We use Stories on Board to help capture our high level Epics at a portfolio level before they are commmitted and moved to Github. Our Story Board for Mojaloop is located here\nVisual Studio Code - Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.\nZenHub – We needed a project management solution that was very light weight and cloud based to support distributed teams. It had to support epics, stories, and bugs and a basic project board. VS and Jira online offerings were both considered. For a small distributed development team an online service was better. For an open source project, we didn’t want ongoing maintenance costs of a server. Direct and strong GitHub integration was important. It was very useful to track work for each microservice with that microservice. Jira and VS both have more overhead than necessary for a project this size and don’t integrate as cleanly with GitHub as we’d want. ZenHub allowed us to start work immediately. A disadvantage is the lack of support for cumulative flow diagrams and support for tracking # of stories instead of points, so we do these manually with a spreadsheet updated daily and the results published to the \"Project Management\" Slack channel.\n\nTECHNOLOGY CHOICES\n\nAgile development - This methodology is used to track and run the project. The requirements need to be refined as the project is developed, therefore we picked agile development over waterfall or lean.\nAPIs - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our Pragmatic REST design pattern. APIs will be defined using OpenAPI or RAML. Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.\nAutomated Testing - For the most part, most testing will be automated to allow for easy regression. See the automated testing strategy and code quality metrics for standards.\nHosting - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.\nInterledger – Mojaloop needed a lightweight, open, and secure transport protocol for funds. Interledger.org provides all that. It also provides the ability to connect to other systems. We also considered block chain systems, but block chain systems send very large messages which will be harder to guarantee delivery of in third world infrastructure. Also, while blockchain systems provide good anonymity, that is not a project goal. To enable fraud detection, regulatory authorities need to be able to request records of transfers by account and person.\nOpen source - The entire project has been released as open source in accordance with the Level One Project principles. All tools and processes must be open source friendly and support projects that use an Apache 2.0 license with no restrictive licenses requirements on developers.\nOperating System – Microsoft Windows is widely used in many target countries, but we need an operating system that is free of license fees and is open source compatible. We are using Linux. We don’t have a dependency on the particular flavor, but are using the basic Amazon Linux. In the Docker containers, Alpine Linux is used.\nMicroservices - Because the architecture needs to easily deploy, scale, and have components be easily replaced or upgraded, it will be built as a set of microservices.\nScaled Agile Framework - There were four initial development teams that are geographically separate. To keep the initial phase of the project on track, the scaled agile framework (SAFe) was picked. This means work is divided into program increments (PI) that are typically four 2 week sprints long. As with the sprints, the PI has demo-able objective goals defined in each PI meeting.\nServices - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.\nThreat Modeling, Resilience Modeling, and Health Modeling - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it. \nUSSD - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider (DFSP).\n\n"},"contributors-guide/tools-and-technologies/pragmatic-rest.html":{"url":"contributors-guide/tools-and-technologies/pragmatic-rest.html","title":"Pragmatic REST","keywords":"","body":"Pragmatic REST\nPragmatic REST For the Mojaloop Project\nWith the emergence of API strategy as a scaling tool for Internet service businesses, the focus on interconnect technology has shifted. Building on the principles that enabled the Web to form and scale, REST (Representational State Transfer) has become a design preference for Internet service APIs. But while the REST principles, proposed in Roy Fielding's dissertation that defined them, have academic value as a basis for research, a pure REST design is not at present practical for most applications. We are advocating a kind of Pragmatic REST-a design pattern that adopts the beneficial components of RESTful design without requiring strict adherence to academic purity.\nThe Richardson Maturity Model\nMartin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and explained at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.\n\nMartin Fowler, referencing Rest in Practice,2 summarizes the genesis of RESTful design:\n\nuse Restful web services to handle many of the integration problems that enterprises face. At its heart . . . is the notion that the web is an existence proof of a massively scalable distributed system that works really well, and we can take ideas from that to build integrated systems more easily.\n\nA pragmatic approach to RESTful design uses the best parts of Fielding's conceptual framework to allow developers and integrators to understand what they can do with the API as rapidly as possible and without writing extraneous code.\nAt its most fundamental, a RESTful design is resource-centric and uses HTTP verbs. At its most advanced, a design that follows pure academic REST utilizes the HATEOAS principle by implementing Hypermedia Controls. We are advocating a Level 2 RESTful design for Mojaloop.\nWhy not Hypermedia Controls?\nAlthough HATEOAS is a fascinating principle-it advocates that a server should respond to each client action with a list of all possible actions that can lead the client to its next application state. And further, clients must not rely on out of band information (like a written API spec) for what actions can be performed on which resources or on the format of URIs.\nIt is this final proscription that fails the test of Pragmatic REST: While HATEOAS is an interesting theoretical approach to limit coupling, it does not easily apply to Mojaloop (or any other contract API design). When we take into account our audience for the interconnect APIs, we find a group of commercial entities that will be operating under a set of highly specific scheme rules. Interactions between the participants, and between participant and central service hub, will be highly specified to assign acceptable commercial risk that can be priced at very low cost to end-users. This requires ex-ante predictability of the API which is anathema to the HATEOAS principle defined by Fielding.\nPragmatic RESTful Principles\nURIs Define Resources\nA well-designed URI pattern makes an API easy to consume, discover, and extend, just as a carefully designed API does in a traditional programming language. Pure REST disdains this principle in favor of HATEOAS. But pragmatic REST follows a normal pattern for URI definitions to improve human understanding, even if HATEOAS principles are employed for discovery.\nURI paths that refer to a collection of objects should consist of a plural noun, e.g. /customers, to refer to a set of customers. When a collection can have only one instance, the singular noun should be used to avoid confusion. E.g. GET /transfers/:id/fulfillment is correct, since there is only one fulfillment object per identified transfer.\nURI paths that refer to a single object should consist of a plural noun (representing the collection), followed by a predefined unique identifier. E.g., /customers/123456 to refer to the specific customer with number 123456. The identifier must be unique within the containing collection and persist for the life of the object within that collection. IDs must not be ordinal values-ordinal retrieval of objects from a collection is possible using query parameters on the collection URI.\nURI paths may have a prefix to identify the environment, version, or other context of the resource. Nothing should follow the identifying path but collections and object references.\nURI path and query segment identifiers should be chosen from the Roman character set, [0-9A-Za-z]. Use camelCase to define the elements of the URI path. Do not use snake_case.\nFor the avoidance of doubt, \"_\" (underscore) and \"-\" (hyphen) should not be used in URI path or query segment identifiers.\nThis probably seems a bit parochial. The purpose is to find a well-defined URI format that is consistent with wide-spread practice, easy to define, predictable, and that maps to native environments and conventions. It isn't going to satisfy everyone. Here is reasoning behind this constraint:\nCapitalCase and camelCase are the defacto standard for NodeJS and JavaScript and are a common constraint in URI definition: URI path segments are often mapped to JS internal resources and so conforming to JS naming conventions makes sense.\nField names in JSON and SQL should also follow this convention since they are often automatically mapped into variable name space and can be referenced in URIs as path or query segment identifiers.\nWe should also avoid the use of \"$\" unless it is required by a library (e.g. JQuery). IBM JCL has passed away; let it rest in peace. There are better scope control tools to separate name spaces than introducing non-roman symbols.\nWe should avoid \"-\" (hyphen) in path segment and query parameter names as it does not map into variable names, SQL, or JSON field name identifiers.\nUnderscore characters must be escaped in markdown source by prefixing each with a \"\\\" character.\nSnake_case has been reported to be slightly easier to read than camelCase in variable names, but it actually does not improve readability of URIs, as it visually interferes with path and query segment delimiters making it difficult to visually parse them. And when URIs are underlined in presentation, the underscores become illegible.\nURI Parameters\nUse a standard and predictable set of optional parameters in a consistent way.\nA set of standard query parameters should be used for collections to enable caller control over how much of the collection they see. E.g. \"count\" to determine how many objects to return, \"start\" to determine where to start counting in the result set, and \"q\" as a generic free-form search query. We will define the standard set of parameters as we go and will apply them consistently.\nVerbs\nSingular objects should support GET for read, PUT for complete replacement (or creation when the primary key is specified by the client and is persistent, e.g. a payment card PAN), and DELETE for delete.\nCollections should support GET to read back the whole or part of a collection, and POST to add a new object to the collection.\nSingular objects may support POST as a way to change their state in specified ways. Posting a JSON document to a singular object URI may allow selected field values to be updated or trigger a state change or action without replacing the whole object.\nGET must be implemented in a nullipotent manner-that is, GET never causes side effects and never modifies client-visible system state (other than logging events or updating instrumentation, e.g.).\nPUT and DELETE must be implemented in an idempotent manner-that is, changes are applied consistently to the system data in a way that is dependent only on the state of the resource and inputs but on nothing else. The action has no additional effect if it is executed more than once with the same input parameters and does not depend on the order of other operations on a containing collection or other resources held in the collection. For example, removing a resource from a collection can be considered an idempotent operation on the collection. Using PUT to fully replace (or create) a uniquely identified resource when the URI is fully known to the client is also idempotent. This implies that the system may reorder operations to improve efficiency, and the client does not need to know whether a resource exists before attempting to replace it.\nPOST and PATCH3 are not idempotent operations. POST is used to create new resources where the resource identifier is assigned by the server or where a single identified internal resource is implied by the target URI (e.g. POST /transfers, but PUT /transfers/:id/fulfillment).\nData Format\nWe favor JSON4 related data formats over XML. In some cases, data formats will be binary or XML, as defined by pre-existing standards, and these will be precisely specified. Binary formats should have a formal syntax to avoid ambiguous representational translations (e.g. character set translations, big- or little-endian representations of numeric values, etc).\nDate and time values used in APIs should comply to the ISO 8601 standard, and further profiled by the w3c Note on Date and Time Formats.5 This w3c note should lead to the reduction in complexity and error scope of communicating components that must exchange tangible dates and times. There will be cases where we use non-ISO format date or time as required by an external standard, e.g. ISO 7813 expiry dates.\nExisting standard XML formats should have an XSD schema for the acceptable subset profile used within the project. For particularly complex data formats, we may use a common format profile translator to map between our project subset of the standard format and the wire format used by a standardized protocol (e.g.). This will limit coupling to complex formats in a more maintainable way.\nWhen specifying the PATCH action for a resource, we will use a consistent patch document format (e.g. JSON Patch6).\nReturn Codes\nUse HTTP return codes in a consistent way and according to their standard definitions. The standard codes are defined in RFC 2616.7\nMachine Readable Error Format\nThe API should provide a machine readable error result in a well-defined JSON format. {TBD whether to use a response envelope and how to format errors, faults, and success envelopes. RESTful design relies on headers to carry protocol-defined errors, debug info can also be carried in headers. We should be clear on why we are using an envelope and how this supports normal production communication between client and server.\nVersioning\nAPI URIs should include a version identifier in the format vM as a leading path element (where \"M\" is the Major component of the multi-part version number). The API and its version identifier element must conform to the semantic versioning8 2.0 specification for API versioning.\nA client must specify the Major version number in each request. It is not possible for a client to express a requirement for a specific minor version.\nThe full API version number is specified in the response header (TBD) for all successful and error responses.\nWhile an API version contract will be influenced by Major, minor, and patch levels, only the Major version number is a production API binding element-that is, a production client cannot request a particular minor version or patch level and a production server will not accept a URI request that specifies these extra elements.\nHowever, in pre-production environments, it is anticipated that some combination of minor, patch, pre-release, and metadata suffixes would be supported in client requests (as defined in semver [3]) and may be expressed in pre-production URIs to assist with development and integration scenarios.\nWe May Need to Give REST a Rest\nAs we design the interconnection APIs between components and between participating systems, we may find API requirements that don't precisely match the Pragmatic REST pattern defined here. We will evaluate these case-by-case and make the best choice to support the project goals.\nNon-Functional Requirements\nAs we develop the APIs, we will make consistent choices about non-functional requirements to reinforce the project goals.\n1: http://martinfowler.com/articles/richardsonMaturityModel.html, retrieved August 18, 2016.\n2: https://www.amazon.com/gp/product/0596805829, retrieved August 18, 2016.\n3: RFC 5789, PATCH Method for HTTP, https://tools.ietf.org/html/rfc5789, retrieved August 18, 2016.\n4: Introducing JSON, http://json.org/, retrieved August 18, 2016.\n5: http://www.w3.org/TR/1998/NOTE-datetime-19980827, retrieved August 22, 2016.\n6: JSON Patch, http://jsonpatch.com/, retrieved August 18, 2016.\n7: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\n8: Semantic Versioning 2.0.0, http://semver.org/, retrieved August 18, 2016.\n"},"contributors-guide/tools-and-technologies/code-quality-metrics.html":{"url":"contributors-guide/tools-and-technologies/code-quality-metrics.html","title":"Code Quality Metrics","keywords":"","body":"Code Quality Metrics\nFunctional quality metrics\nUnit test metrics\nHigh coverage and low dependencies show that the code is testable and therefore well isolated and easy to maintain. Low complexity also makes code readable and maintainable and helps enforce single responsibility. Real unit tests run very fast as they don't call external components.\n\n\n\nCode Quality Metrics\nNew and Project Code\n\n\n\n\nUnit test coverage\n>= 80% block coverage\n\n\nUnit test speed\n\n\n\nDependencies/method\n\n\n\nComplexity/method\n\n\n\n\nComponent\nFunctional testing typically covers pair combinations of the system states.\nIntegration\nFunctional tests have one test per message and error. Messages and errors that are handled the same way use the same test.\nContract\nLimited to what the consuming teams need that isn't covered by existing unit, component, and integration tests. Often added to over time.\nEnd to End\nEnd to end tests cover acceptance tests from scenarios.\n"},"contributors-guide/tools-and-technologies/automated-testing.html":{"url":"contributors-guide/tools-and-technologies/automated-testing.html","title":"Automated Testing","keywords":"","body":"Automated Testing\nThe page describes our automated testing philosophy along with the regression testing framework.\n"},"contributors-guide/documentation/":{"url":"contributors-guide/documentation/","title":"Documentation","keywords":"","body":"Documentation\nOverview\nMojaloop has set forward several standards to ensure that documentation throughout the project is consistent and kept up to date. \n\nAll documentation that is relevant for contributors is kept on the \"documentation\" repository.\nThe \"documentation\" repository is sync'ed with GitBook and all content is consumed in an easily readable format on: https://www.gitbook.com/mojaloop\nAll documentation should include:\nOverview: business overview to provide the value or reason for the documentation page\nDetails: appropriate summary information to support the documentation\n\n\n\n \nDocumentation standards\nDocumentation Style Guide\nAll new documentation should confirm to the documentation and styles as discussed here.\nCode Style Guide\nNodeJS\nWe follow the Standard style guidelines. Add npm install standard to you package.json.\nJava\nFor Java we follow Checkstyle.Code Quality Metrics\n \n"},"contributors-guide/documentation/api-documentation.html":{"url":"contributors-guide/documentation/api-documentation.html","title":"API Documentation","keywords":"","body":"API Documentation\nAll APIs should be documented in RAML or Swagger, see Architecture-Documentation-Guidelines](Architecture-Documentation-Guidelines.md)\nSection Headings\n\nDo not number headings - for example, \"Prepare and Fulfill\", not \"C - Prepare and Fulfill\"\nMake sure section headings (# ) match the heading to which they correspond in the comprehensive PDF (built from the dactyl config file)\nDo not include the word \"documentation\" in headings\n\nRetrievability\n\nFor sections that contain many subsections of endpoints or methods, provide a table of contents at the beginning of the section\nDon't say the word project; use component, microservice, interfaces, etc\n\nLanguage\nInstead of the word \"project,\" use a specific noun such as component, microservice, or interface.\nProcedures\n\nIntroduce procedures with H3 (###) or H4 (####) headers (not H2 (##)).\nDo not use numbers in procedure section headings.\nUse ordered-list tagging for procedure steps. For example:\nStep 1\nStep 2\nStep 2\n\n"},"contributors-guide/documentation/documentation-style-guide.html":{"url":"contributors-guide/documentation/documentation-style-guide.html","title":"Documentation Style Guide","keywords":"","body":"Documentation Style Guide\nIn most cases, Mojaloop follows the latest edition of the Associated Press Stylebook. The following are foundation-specific guidelines which have been updated and slightly modified.\nAcronyms\nSpell out all acronyms on first reference. Include the acronym in parentheses immediately after the full spelling only if you refer to it again in the document. Example: Kofi Annan, chairman of the board of the Alliance for a Green Revolution in Africa (AGRA), traveled to Nairobi this month. It was his first visit to the AGRA office.\nAmpersand\nOnly use an ampersand (&) when it's part of a formal name like the Bill & Melinda Gates Foundation. In all other cases, spell out and.\nBill & Melinda Gates Foundation\nOur formal legal name is the Bill & Melinda Gates Foundation. Use it on first reference. Always use the ampersand (&) and always capitalize Foundation when Bill & Melinda Gates comes before it.\nNever abbreviate the foundation's name as BMGF.\nNever translate the foundation name into other languages, as it is a proper noun. The one exception to this is when translating the foundation's name into Chinese, in which case translation is acceptable.\nDo not capitalize foundation when the word stands alone. Example: The foundation's new headquarters will be built near Seattle Center.\nUse Gates Foundation only if you are sure the context makes the foundation's identity clear. There is a Gates Family Foundation in Colorado, so we need to be careful. Example: The Bill & Melinda Gates Foundation and the Ford Foundation co-sponsored the event. A Gates Foundation staff member gave closing remarks.\nThe entity that manages the endowment is formally and legally known as the Bill & Melinda Gates Foundation Trust. You will not need to refer to this entity often, but when you do, write it out on first reference and refer to it as the asset trust thereafter.\nBold and colons\nFrequently I see structures (like in this very comment!) where you have introductory terms or phrases that are bolded and set apart from the contents with a colon. Should the colon also be bolded, or not? (I frequently see it done both ways.)\nBuffett\nNote the spelling: two fs and two ts (i.e., Warren Buffett).\nBulleted lists\nIntroduce bulleted lists with a colon when the listed items complete the lead-in sentence or phrase. Exception: never use colons in headings or subheadings to introduce bulleted lists.\nCapitalize the first words of and use periods with listed items only if they are full sentences. Examples:\n\nThis is a complete sentence.\nnot a complete sentence\n\nNever link items in a bulleted list with coordinating conjunctions and punctuation (semicolons or commas) as you would in a sentence-style list. In other words, never do:\n\nthis,\nthat, or\nthe other thing.\n\nCaptions\nCaption photos whenever possible. It helps people understand our work.\nWrite captions as single gerund (ing verb) phrases, followed by the city, state or country, and year the photo was taken in parentheses. Example: A doctor preparing a vaccine for delivery (Brazzaville, Congo, 2007)._\nWhen writing a caption, be sure to introduce the people featured and explain what's happening in the image as it relates to our areas of focus. Be as brief as possible so you don't distract from the image or layout. Avoid verbs that state the obvious about what the photo's subject is doing (e.g., smiling, standing, and so on).\nIf one of the co-chairs appears in a photo with other people, be sure to identify the co-chair in the caption. Don't assume everyone knows what our co-chairs look like.\nCitations\nMost fields have their own citation conventions. Adopt those used by the field in question. When citation conventions are unavailable or uncertain, follow The Chicago Manual of Style.\nWhen a document uses both footnotes and endnotes, for the footnotes, use the following symbols:\n\n1st note = * (asterisk)\n2nd note = † (dagger)\n3rd note = ‡ (double dagger)\n4th note = § (section sign)\n5th note = ** (2 asterisks)\n6th note = †† (2 daggers)\n7th note = ‡‡ (2 double daggers)\n8th note = §§ (2 section signs) \n\nSeparate multiple superscript references (footnotes, endnotes) with commas, not semicolons.\nClinical trials\nUse Roman numerals when referring to clinical trial phases and always capitalize Phase. Example: The company will begin Phase III trials on the new drug this spring.\nContact information\nUse periods to separate parts of phone numbers, and begin each number with a plus sign.\nBecause we work with people throughout the world, omit the international access code, which differs from country to country (it's 011 in the United States). Examples: +1.206.709.3100 (United States) +91.11.4100.3100 (India)\nCopyright and trademark notice\nAll publications, media, and materials produced by or for the foundation should contain the notice shown below. The Legal team must approve all exceptions.\n © (year) Bill & Melinda Gates Foundation. All Rights Reserved. Bill & Melinda Gates Foundation is a registered trademark in the United States and other countries.\nWhen possible, begin the trademark portion of the notice on a separate line.\nDashes\nUse dashes—those the width of a capital M—to indicate asides or abrupt changes in thought. Use en dashes—those the width of a capital N—with numerical ranges.\nDo not include a space before or after a dash.\nExamples: We work to make safe, affordable financial services—particularly savings accounts—more widely available to people in developing countries.\nIn the 2004 presidential election, 76 percent of U.S. college graduates ages 25-44 voted.\nDollars ($)\nIn Global Health and Global Development materials, because more than a dozen countries use dollars, specify U.S. dollars in parentheses on first mention in a document. Example: $100,000 (U.S.). Omit the parenthetical U.S. in subsequent references to dollar amounts in the same document.\nFoundation program names\nWe have three programs: Global Development Program, Global Health Program, and United States Program.\nProgram is capitalized when used with the full name (Global Development Program), but not when used alone (The program makes grants in several areas.).\nUse periods when abbreviating the name of the United States Program: U.S. Program.\nGH, GD, and USP are fine for internal use, but inappropriate for external publications.\nGates family\nWilliam Gates III is formally referred to as Bill Gates. In internal documents, use Bill—not a nickname or abbreviation.\nUse Melinda Gates when formally referring to Melinda.\nUse William H. Gates Sr. when formally referring to Bill Gates Sr. There is no comma between Gates and Sr. Bill Sr. is acceptable in internal documents.\nPlural: Gateses. Do not use an apostrophe to form the plural of the family's name. Example: The Gateses attended the opening of the new University of Washington law building.\nPossessive: The apostrophe follows Gates when you refer to something owned by either Bill or Melinda. Example: Melinda Gates' speech was well received. The apostrophe follows Gateses when you refer to something Bill and Melinda own jointly. Example: The Gateses' decision to provide free Internet access in U.S. public libraries has increased library usage and circulation overall.\nYou may also phrase it this way: Bill and Melinda Gates' decision to provide free Internet access …\nSee the Titles of people entry for the formal titles of Bill, Melinda, Bill Sr., and other leaders of the foundation.\nHyphens\nThere are few hard-and-fast rules when it comes to hyphens. Generally we use them to enhance the reader's understanding.\nExamples: When writing for the Bill & Melinda Gates Foundation, use real-world poverty examples to illustrate your point. When writing for the Bill & Melinda Gates Foundation, use real world-poverty examples to illustrate your point.\nIn the first example, the hyphen in real-world connects real and world to form a single adjective describing poverty. In the second example, the hyphen in world-poverty connects world and poverty to form a single adjective describing examples.\nThe meaning changes depending on the placement of the hyphen. In instances where a series of adjectives creates ambiguity about what they refer to, use a hyphen to clarify the intended meaning.\nWhen capitalizing hyphenated words, only capitalize the first part. Example: Co-chairs Bill and Melinda Gates.\nFor other uses of hyphens—compound modifiers, prefixes and suffixes, fractions—refer to the Associated Press Stylebook.\nNumerals\nWhen referring to dollar figures, spell out million and billion. Use figures and decimals (not fractions). Do not go beyond two decimal places. Example: The foundation granted .45 million to United Way.\nWhen using numbers that have nothing to do with dollar figures or percentages, write them out if they are under 10, and use numerals if they are 10 or over. Example: Four program officers went on 13 site visits.\nIn cases of grammatical parallelism, parallel construction always trumps this rule. For instance: Mr. Johnson has two children, 5-year-old Kyle and 13-year-old Frances.\nNever begin a sentence with a numeral. Either spell the number out or revise the sentence so it doesn't begin with a number.\nPercentages\nWhen using percentages, write out percent (don't use %). Use numerals instead of writing numbers out, even if they're less than 10.\nExample: This program accounts for 6 percent of our grantmaking.\nPhotographer credits\nIf the foundation owns the image you are using, you don't need to credit the photographer. All images in our media asset management system are foundation-owned. If the foundation has purchased a license to use the image, you may need to credit the photographer. If you have questions about photo credit requirements, contact the Foundation Communications Service Desk.\nPlain language\nWe could call out a few specific constructions that are needlessly wordy. One that we frequently catch at Ripple is \"in order to\" instead of just \"to.\"\nQuotation marks\nUse double quotation marks for dialogue and the citation of printed sources. Limit use of scare quotes—quotation marks meant to call attention to a quoted word or phrase and distance the author from its meaning, typically because the language is specialized, idiomatic, ironic, or misused. Example: The foundation has increasingly used “program-related investments” in recent years.\nQuoted strings and punctuation\nWhen describing exact strings in technical documentation, should punctuation (not part of the literal strings) be included in the quotation marks? For example, valid states include \"pending,\" \"in progress,\" and \"completed.\"\nScientific names\nCapitalize and italicize scientific names in accordance with conventions in the scientific community. Use the full version of a scientific name on first mention and the abbreviated form thereafter. For example, use Salmonella typhi first and S. typhi for each additional reference.\nSerial commas\nWith lists of three or more items in a sentence, add a final comma before the coordinating conjunction and or or. Example: The foundation's three program areas are Global Development, Global Health, and the United States.\nSpacing after punctuation\nUse only one space after punctuation, including periods, colons, and semicolons.\nSpelling and capitalization conventions\nbed net: two words, no hyphen.\nemail: one word, no hyphen, lowercase.\nfoundation: lowercase, except as part of the full foundation name.\ngrantmaking: one word, no hyphen.\nnongovernmental: one word, no hyphen.\nnonprofit: one word, no hyphen.\npostsecondary: one word, no hyphen.\nWashington state: lowercase state (unless you're referring to Washington State University, the Washington State Legislature, or something similar).\nwebsite: one word, lowercase\nTitles of people\nFormal titles should not be capitalized unless the title precedes a person's name or appears in a headline. Example: Co-chair Melinda Gates will speak at the Washington Economic Club this year.\nLowercase and spell out titles when they are not used with an individual's name. Example: The foundation co-chair issued a statement.\nLowercase and spell out titles in constructions that use commas to set them off from a name. Example: Bill Gates, co-chair of the foundation, commented on the grant.\nUnited States\nSpell out United States when using it as a noun. Abbreviate it as U.S. (including periods) when using it as an adjective. In certain cases, as when referring to a person from the United States, it's acceptable to use American.\nExamples: The U.S. State Department is in the United States. The foundation's U.S. Program…\nURL\nReference web addresses without the http:// as follows: www.gatesfoundation.org\n"},"contributors-guide/frequently-asked-questions.html":{"url":"contributors-guide/frequently-asked-questions.html","title":"Frequently Asked Questions","keywords":"","body":"Frequently Asked Questions\nWhat is Mojaloop? Mojaloop is open-source software for building interoperable digital payments platforms on a national scale. It makes it easy for different kinds of providers to link up their services and deploy low-cost financial services in new markets.\nHow does it work? Most digital financial providers run on their own networks, which prevents customers who use different services from transacting with each other. Mojaloop functions like a universal switchboard, routing payments securely between all customers, regardless of which network they're on. It consists of three primary layers, each with a specific function: an interoperability layer, which connects bank accounts, mobile money wallets, and merchants in an open loop; a directory service layer, which navigates the different methods that providers use to identify accounts on each side of a transaction; a transactions settlement layer, which makes payments instant and irrevocable; and components which protect against fraud.\nWho is it for? There are many components to the code, and everyone either directly or indirectly working with digital financial transactions-fintech developers, bankers, entrepreneurs, startups-is invited to explore and use whatever parts are useful or appealing. The software as a whole is meant to be implemented on a national scale, and so it will be most applicable to mobile money providers, payments associations, central banks, and country regulators.\nDevelopers at fintech and financial services companies can use the code in three ways: adapt the code to the financial services standards for a country, use the code to update their own products and services or create new ones, and improve the code by proposing updates and new versions of it for other users.\nFor example:\n\nA central bank may commission the use of the software by their commercial partners to speed up the deployment of a national payment gateway.\nA major payment processor can use the software to modernize their current offering, to achieve lower transaction costs without major R&D investments.\nA fintech startup can use the code to understand practically how to comply with interoperable payment APIs.\nA bank can use the code to modify their internal systems so that they easily interoperate with other payment providers.\n\nWhy does it exist? Providers trying to reach developing markets with innovative, low-cost digital financial services have to build everything on their own. This raises costs and segregates services from each other. Mojaloop can be used as a foundation to help build interoperable platforms, lowering costs for providers and allowing them to integrate their services with others in the market.\nWho's behind it? Mojaloop was built in collaboration with a group of leading tech and fintech companies: Ripple, Dwolla, Software Group, ModusBox and Crosslake Technologies. Mojaloop was created by the Gates Foundation's Mojaloop, which is aimed at leveling the economic playing field by crowding in expertise and resources to build inclusive payment models to benefit the world's poor. It is free to the public as open-source software under the Apache 2.0 License.\nWhat platforms does Mojaloop run on? The Mojaloop platform was developed for modern cloud-computing environments. Open-source methods and widely used platforms, like Node.js, serve as the foundation layer for Mojaloop. The microservices are packaged in Docker and can be deployed to local hardware or to cloud computing environments like Amazon Web Services or Azure.\nIs it really open-source? Yes. All core modules, documentation and white papers are available under a Apache 2.0 License. Mojaloop relies on commonly used open-source software, including node.js, MuleCE, Java and PostgreSQL. Mojaloop also uses the Interledger Protocol to choreograph secure money transfers. The licenses for all of these platforms and their imported dependencies allow for many viable uses of the software.\nHow can I contribute to Mojaloop? You can contribute by helping us create new functionality on our roadmap or by helping us improve the platform. For our roadmap, go to the Mojaloop Roadmap. We recommend starting with the onboarding guide and sample problem. This has been designed by the team to introduce the core ideas of the platform and software, the build methods, and our process for check-ins.\nWhat is supported? Currently the Central ledger components are supported by the team. The DFSP components are outdated and thus the end-to-end environment and full setup is challenging to install.\n"},"mojaloop-background/":{"url":"mojaloop-background/","title":"Mojaloop Background","keywords":"","body":"Mojaloop Background\nMojaloop Background\nMojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.\nDigital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.\nWith support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: Ripple, Dwolla, ModusBox, Software Group and Crosslake Technologies. It is available now as an open-source project. Free to be used and adapted by anyone under the Apache 2.0 license. For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit LevelOneProject.org.\n"},"mojaloop-background/core-scenarios.html":{"url":"mojaloop-background/core-scenarios.html","title":"Core Scenarios","keywords":"","body":"Core Scenarios\nAbout Mojaloop Scenarios\nMojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals (which are handled as a separate transaction). The most common paths include:\n\nSend money to anyone\nBuy Goods\nBulk Payments\nTiers/Risk Level\nFraud Checks and Blacklists\nAccount Management\nCheck Account and POS\n\nScenario Descriptions\nSend money to anyone\nHamim is working on his farm in Northern Uganda when he receives an urgent phone call from his brother, Kani. Kani is low on money and will not get paid until next week. Kani has no money to pay for food for his family and asks Hamim to help him out. Hamim and Kani have no means of transportation and it would take several days for Hamim to get to his Kani's home in Southern Uganda. While they both have mobile flip phones, they use different financial service providers. Kani tells Hamim that he needs 5,000 shillings to buy food until he gets paid next week for his job working in a local field. Hamin agrees to send Kani the money.\n *** Mojaloop technology does its job ***\n\nBecause Hamim has sent money to Kani before he has his information on his phone. Hamim sees Kani's name come up on his phone and he starts the transaction. He also sees the total fees and any exchange rates he has to pay before he sends the money. He is happy for that validation and that the transaction goes the same way every time. In under 30 seconds, Hamim is able to send the money to his Kani and verifies that he got it. Hamim is happy he was able to help out Kani and his family so quickly so they can buy food.\nBuy Goods - Pending Transactions\nVenya is waiting in line to buy plantains at her local market. She is corralling her elder child with one hand and has her baby in a sling. She often comes to this seller and she knows he has a good price. She also knows that even though she carries no money and he is not on her financial network, she can buy from him. As she approaches the head of the line she juggles the children and pulls out a simple flip phone. She tells him 1.5 kilograms and he tells her the price, which she agrees to.\n *** Mojaloop technology does its job ***\n\nBecause she's been here before the merchant already has her information on his phone. The only information he has is her user number. This makes Venya feel safe that the merchant does not have her mobile phone number. The merchant enters in the amount for the plantains. Almost instantaneously, Venya sees the merchants invoice on her phone and she is glad she is able to pay for the transaction using her mWallet account. She is happy that the transaction goes the same way every time, because half of her attention is on the children. She has friends who can't read and they are able to buy things this way too by following the simple order of the transaction. In under 30 seconds, she is able to send the money to the merchant and both Venya and the merchant get confirmation of the transaction. She tells the elder child to pick up her plantains and makes room for the next person in line.\nBulk Payments\nNikisha is the accountant for one of the largest manufacturing companies in Johannesburg and employs over 250 workers. Their company uses a time and attendance system to track the number of hours that each employee works along with their hourly rate and employee ID. On a weekly basis Nikisha gets an update on her bulk payment system that shows all the employees, their user ID along and amount to be paid. Since the companies employees all have different financial service providers this system makes it really easy for Nikisha to confirm and distribute their pay with a couple of clicks. The company has a high turnover rate so new employees who get their first paycheck are automatically prompted to open an account as long as they provided a valid mobile number when they started. As Nikisha gets ready to send out this week's payments she opens up a bulk payment report.\n*** Mojaloop technology does its job ***\n\nThe bulk report for payments comes up by date range and, since Nikisha does this weekly, there are several items she needs to verify each time. Specifically, she looks for any errors or alerts for employees with invalid phone numbers, names not matching or other anomalies. Nikisha has the ability to follow-up with her co-workers or employees directly to fix these errors before sending out the payments. In addition, Nikisha is also notified of any employees who don't have an account setup. For these users, Nikisha is still able to push a payment through and the employee will be prompted by text message to open an account. Nikisha is thankful she has this process that makes it much easier to distribute funds. Once Nikisha has completed her validation, she sends it to her supervisor for final approval. Nikisha is glad to have this system in place because several years ago, Nikisha and her supervisor had to pay employees in cash and use a manual system to verify payments were received which made her feel very uneasy.\nTiers/Risk Levels\nSalem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor, manage and reduce risk for the company. order to do so each new user ID in the system is assigned a default tier level which means they can only transfer a small number and amount of funds in and out of the system over specific periods of time. As users acquire greater balances in their accounts and hold their accounts for longer periods of time their tier levels improve. Tier levels are handled automatically by the system so Salem does not need to worry about assigning or changing these levels under normal circumstances. Part of Salem's job as an auditor is to review the daily reports to ensure that everyone's funds are safe and secure and he kicks off his daily report to review the accounts.\n*** Mojaloop technology does its job ***\n\nThis morning when Salem reviews these reports he notices that one specific user ID has 32 outgoing transactions in one day which exceeds their daily count of 25. This seems very suspicious to Salem and he goes ahead and contacts the customer. It turns out that this customer is a local merchant that owns a store. The merchant explains that he has to go to the market on a weekly basis to get ingredients for his restaurant and it is not uncommon for him and his staff to make more than 25 purchases in one day. Although this customer has only been with Salem's bank for a month then have a healthy balance in their account. Salem goes ahead and upgrades the customers tier level to increase the daily and weekly transaction counts.\nFraud Checks and Blacklists\nSalem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor and stop any fraudulent activity for the company. While the company has a set of rules that might flag individuals for Salem to investigate, he also has the authority to screen any user ID for fraudulent activities at any time. Each time Salem performs a fraud check on a user ID, the system records the date of the last check along with any comments that Salem might have made. This makes it very easy for Salem to search for IDs that might have never been checked for fraud or have not been checked in a very long time. Salem has been monitoring one particular ID that seems to have had an increased amount of incoming funds deposited into their account on a daily basis. Today he does a search of the user ID to investigate further.\n*** Mojaloop technology does its job ***\n\nWhen the user ID is retrieved Salem is able to see the customer's name, birthdate and national ID number. He also sees any additional IDs and the account type associated with this customer. Upon further inspection Salem sees once again the number and amount of transactions deposited into this account has doubled again today. Salem suspects that this user is involved in some illegal activity and would like to send this up to his supervisor to get someone to do a deeper investigation. In the meantime to ensure that the illegal funds don't continue to come into the system, Salem decides to 'freeze' the account. Salem does this by checking the blacklist button and indicating a reason for the blacklist. At this point any future deposits or withdrawals for this User ID will be denied until someone from the Bank removes them from the blacklist. Salem feels good that no additional funds that might of come from illegal or unapproved sources will be deposited into this customer account.\nAccount Management\nTadeo just bought his first mobile flip phone for him and his family to share. He is happy that he finally has a phone that he can use in emergencies, but he can also finally keep his money secure by opening up a bank account. Tadeo has never had a bank account since he lives in a very remote part of Africa with no personal means of transportation. Tadeo and his family have to rely on bartering or cash to buy any goods they need at the market. Although Tadeo is not proficient in reading, he is able to easily use his phone to setup and account for him and his family by following a couple of easy to read menu steps.\n*** Mojaloop technology does its job ***\n\nTadeo was able to use his phone to create an mWallet account using his National ID. He was also asked to create a unique pin which made him feel secure in case him or someone in the family lost the phone. Tadeo is the primary account owner and he was able to easily create a new account for his oldest son. He was very pleased that he could have separate accounts for his son. His son is married and lives with Tadeo but does not have a phone. Since his son works it is only fair that they should be able to spend his money on goods and foods that he and his wife prefer. Tadeo also adds his wife as a user on his account. He allows his wife to be a signatory since she does most of the shopping at the local market and now has the ability to pay for goods using this phone. Tadeo is very happy that his wife no longer needs to have cash or carry barter goods to the market.\nCheck Account and POS\nJahari has a flip phone that all the family uses and he has setup different user numbers for each family member. Jahari is at the local market and needs to buy some meat for his family. Before he does, he wants to make sure he has enough funds in his account to purchase the goods and still have enough left over to set aside for future medical expenses and education. Jahari is happy that his money is secure and he is able to check his account balance anytime he needs to by simply entering his secure pin on his phone. Once he confirms his balance he will buy some goat and cow meat at the market.\n *** Mojaloop technology does its job ***\n\nAfter Jahari has entered his pin on his phone he is able to see his account balance. He is also able to see to see any of his recent transactions as well as any fees that were associated with these transactions. After confirming his available funds he picks out his meat and brings it up to the merchant for payment. The merchant does a lot of business in this market and has a point of sales device. This is very helpful for Jahari and his family since they only have one phone and many times his wife or his children go to the market and do not have the phone with them. The merchant is able to enter the purchase amount on the POS device and Jahari or any of his family members securely enters their user number and reviews the transaction. Jahari confirms that the amount on the POS machine matches what the merchant verbally told him and he enters his pin to approve the transaction.\n*** Mojaloop technology does its job ***\n\nThe merchant gets confirmation that he received payment and he prints a receipt for Jahari. Since Jahari has his phone with him today he also re-checks his account balance again to confirm that appropriate funds were taken from his account. Jahari is happy that this is an easy process and he can see that he has plenty of money left to set aside this month for his family to use on education or health expenses.\n"},"mojaloop-background/level-one-principles.html":{"url":"mojaloop-background/level-one-principles.html","title":"Level One Principles","keywords":"","body":"Level One Principles\nThe Level One Project Guide outlines a vision of how an inclusive digital financial services system can work for the benefit of poor people. The underlying design principles of the Guide include:\n\nA push payment model with immediate funds transfer and same day settlement\nOpen-loop interoperability between providers\nAdherence to well-defined and adopted international standards\nAdequate system-wide shared fraud and security protection\nEfficient and proportional identity and know-your-customer (KYC) requirements\nMeeting or exceeding the convenience, cost and utility of cash\n\nBy utilizing an open, digital approach to transactions, and partnering with organizations across the public and private sectors, the Level One Project Guide aims to provide access to a robust, low-cost shared digital financial services infrastructure, sparking innovation from new and existing participants, reducing risk, and generating substantial value for providers, individuals and economies in developing markets. Additional resources have been created to help governments, NGOs and financial service providers successfully implement these changes.\n"},"mojaloop-technical-overview/":{"url":"mojaloop-technical-overview/","title":"Mojaloop Technical Overview","keywords":"","body":"Mojaloop Technical Overview\nMojaloop Services\nThe basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers (DFSPs) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. The following diagrams shows the Mojaloop interconnects between DFSPs and the Mojaloop Hub (schema implementation example) for a Peer-to-Peer (P2P) Transfer:\nMojaloop addresses these issues in several key ways:\n\nA set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.\nA standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.\nComplete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.\n\n\nThe Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:\n\nMojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.\nMojaloop Hub - Overall Mojaloop reference (and customizable) implementation for Hub Operators is based on the above OSS solution.\n\n"},"mojaloop-technical-overview/mojaloop-components.html":{"url":"mojaloop-technical-overview/mojaloop-components.html","title":"Mojaloop Hub","keywords":"","body":"Mojaloop Hub\nThere are several components that make up the Mojaloop ecosystem. The Mojaloop Hub is the primary container and reference we use to describe the core Mojaloop components. \nThe following component diagram shows the break-down of the Mojaloop services and its micro-service architecture: \n\nNote: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. Central-Services utilise MySQL as a Data-store, and leverage on Kafka for Messaging\nThese consist of:\n\nThe Mojaloop API Adapters provide the standard set of interfaces a DFSP can implement to connect to the system for Transfers. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.\nThe Central Services provide the set of components required to move money from one DFSP to another through the Mojaloop API Adapters. This is similar to how money moves through a central bank or clearing house in developed countries. The Central Services contains the core Central Ledger logic to move money but also will be extended to provide fraud management and enforce scheme rules.\nThe Account Lookup Service (ALS) provides mechanism to resolve FSP routing information through the Particpant API or orchestrate a Party request based on an internal Participant look-up. The internal Participant look-up is handled by a number of standard Oracle adapter or services. Example Oracle adapter/service would be to look-up Participant information from Pathfinder or a Merchant Registry. These Oracle adapter or services can easily be added depending on the schema requirements.\n\nOn either side of the Mojaloop Hub there is sample open source code to show how a DFSP can send and receive payments and the client that an existing DFSP could host to connect to the network.\n"},"mojaloop-technical-overview/central-ledger.html":{"url":"mojaloop-technical-overview/central-ledger.html","title":"Central-Ledger Services","keywords":"","body":"Central-Ledger Services\nThe central ledger is a series of services that facilitate clearing and settlement of transfers between DFSPs, including the following functions:\n\nBrokering real-time messaging for funds clearing\nMaintaining net positions for a deferred net settlement\nPropagating scheme-level and off-transfer fees\n\n\n"},"mojaloop-technical-overview/account-lookup-service.html":{"url":"mojaloop-technical-overview/account-lookup-service.html","title":"Account-Lookup Service","keywords":"","body":"Central-Ledger Services\nThe Account Lookup Service (refer to section 6.2.1.2) as per the Mojaloop Specification implements the following use-cases:\n\nParticipant Look-up \nParty Look-up\nManage Participants Registry information\nAdding Participant Registry information\nDeleting Participant Registry information\n\n\nAdmin Operations\nManage Oracle End-point Routing information\n\n\n\n1. Design Considerations\n1.1 Account Lookup Service (ALS)\nThe ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.\nThe routing configuration will be based on the following:\n\nPartyIdType - See section 7.5.6 of the Mojaloop Specification\nPartyIdentifier - See section 7.3.24 of the Mojaloop Specification\nCurrency - See section 7.5.5 of the Mojaloop Specification. Currency code defined in ISO 4217 as three-letter alphabetic string. This will be optional, and must provide a \"default\" config if no Currency is either provided or provide a default if the Currency is provided, but only the \"default\" End-point config exists.\n\n1.2 ALS Oracle Service/Adapter\nThe ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the /participants Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.\n\nALS Oracle Service v1 Interface Contract\n\n2. Participant Lookup Design\n2.1 Architecture overview\n\n2.2 Sequence diagram\n\n3. Party Lookup Design\n3.1 Architecture overview\n\n3.2 Sequence diagram\nWork in progress..\n4. Database Design\n4.1 ALS Database Schema\nWork in progress..\n4.2 Oracle Database Schema\nThis is optional & is dependant on the Oracle's requirements & design.\n"},"mojaloop-technical-overview/central-settlements-service.html":{"url":"mojaloop-technical-overview/central-settlements-service.html","title":"Central-Settlements Service","keywords":"","body":"Central-Settlements Service\nThe Central Settlements service is part of the Mojaloop project and deployment.\n\nThe central settlements service exposes Settlement API to manage the settlements between FSPs and the Central Hub. \nThe service manages Settlement Windows and Settlements Event Triggers and provides information about FSPs accounts and settlements.\n\n\n"},"mojaloop-technical-overview/fraud-services.html":{"url":"mojaloop-technical-overview/fraud-services.html","title":"Fraud Services","keywords":"","body":"Fraud Services\nWork in progress...\n"},"api/":{"url":"api/","title":"APIs","keywords":"","body":"APIs Specifications\nMojaloop API\nDocumentation: Mojaloop v1.0 Specification\n\nMojaloop API Specification\n\nALS Oracle API\nDocumentation: ALS Design\n\nALS Oracle API Specification\n\n"}}}
\ No newline at end of file
1. Install Calibre: https://calibre-ebook.com/download
-2. Run `npm run gitbook:export:pdf`
+2. npm install svgexport -g"
+
+3. Pre-requisites for node-canvas: https://github.com/Automattic/node-canvas/wiki/_pages
+
+4. npm install canvas
+
+5. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
A file `book.pdf` will be generated in the root directory
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
+- Export PDF does not contain a
## Docker
end box
' START OF FLOW
group Get Participant's FSP Details
- PAYER_FSP -> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ PAYER_FSP --> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
activate ALS_API
ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details. \nError code: 3200
deactivate ALS_API
+## INSTRUCTIONS
+# Insert variables to be loaded into Gitbook
+# They can be referenced via {{ book.importedVars. }} the following example
+#
+# ```markdown
+# This is the value of my variable {{ book.importedVars. }}
+#
+#```
+#
+
+mojaloop:
+ spec:
+ version: v1.0
+ uri:
+ doc: https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf
+ api: https://github.com/mojaloop/mojaloop-specification/blob/master/Supporting%20Files/fspiop-rest-v1.0-OpenAPI-implementation.yaml
# Central-Ledger Services
-The Account Lookup Service _(refer to section `6.2.1.2`)_ as per the [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) implements the following use-cases:
+The Account Lookup Service _(refer to section `6.2.1.2`)_ as per the [Mojaloop {{ book.importedVars.mojaloop.spec.version }} Specification]({{ book.importedVars.mojaloop.spec.uri.doc }}) implements the following use-cases:
* Participant Look-up
* Party Look-up
+
+3x MasterNodes[Not supported by viewer]3x ETCdNodes[Not supported by viewer]Alt: DSN Round Robin Fail-overAlt: DSN Round Robin Fail-overLayer 4 Load Balancer<font style="font-size: 14px">Layer 4 Load Balancer</font>FirewallFirewallDMZ[Not supported by viewer]ExternalConsumer[Not supported by viewer]3x WorkerNodes[Not supported by viewer]KEY[Not supported by viewer]Ingress Controller deployed as a DaemonSet[Not supported by viewer]
\ No newline at end of file
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
-
-[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubeInfrastructureArch.png)
+
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
-
-[Kubernetes Install with Docker 1](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-1.png)
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
-
-[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
-
-[kubernetes-dashboard](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/kubernetesDashboard.png)
+
**Ubuntu** continue from here
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
-
-[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubeInfrastructureArch.png)
+
#### 1.2 Local Deployment and Testing Tools
RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ pytho
WORKDIR /opt/gitbook/repo
-RUN npm install
+RUN npm ci
RUN apk del build-dependencies
+# CircleCI v2 Config
+version: 2
+
+defaults_working_directory: &defaults_working_directory
+ working_directory: /home/circleci/project
+
+defaults_docker_node: &defaults_docker_node
+ docker:
+ - image: mhart/alpine-node:10.15.1
+
+defaults_docker_helm_kube: &defaults_docker_helm_kube
+ docker:
+ - image: hypnoglow/kubernetes-helm
+
+defaults_Dependencies: &defaults_Dependencies |
+ apk --no-cache add git
+ apk --no-cache add ca-certificates
+ apk --no-cache add curl
+ apk --no-cache add openssh-client
+ apk add --no-cache -t build-dependencies make gcc g++ python libtool autoconf automake
+ npm config set unsafe-perm true
+ npm install -g node-gyp
+
+defaults_awsCliDependencies: &defaults_awsCliDependencies |
+ apk --no-cache add \
+ python \
+ py-pip \
+ groff \
+ less \
+ mailcap
+ pip install --upgrade awscli==1.14.5 s3cmd==2.0.1 python-magic
+ apk -v --purge del py-pip
+
+defaults_Environment: &defaults_environment
+ name: Set default environment
+ command: |
+ echo "Nothing to do here right now...move along!"
+
+defaults_build_docker_login: &defaults_build_docker_login
+ name: Login to Docker Hub
+ command: |
+ docker login -u $DOCKER_USER -p $DOCKER_PASS
+
+defaults_build_docker_build: &defaults_build_docker_build
+ name: Build Docker $CIRCLE_TAG image
+ command: |
+ echo "Building Docker image: $CIRCLE_TAG"
+ docker build -t $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG .
+
+defaults_build_docker_build_release: &defaults_build_docker_build_release
+ name: Build Docker $RELEASE_TAG image
+ command: |
+ echo "Building Docker image: $RELEASE_TAG"
+ docker build -t $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG .
+
+defaults_build_docker_publish: &defaults_build_docker_publish
+ name: Publish Docker image $CIRCLE_TAG & Latest tag to Docker Hub
+ command: |
+ echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG"
+ docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG
+
+defaults_build_docker_publish_release: &defaults_build_docker_publish_release
+ name: Publish Docker image $RELEASE_TAG tag to Docker Hub
+ command: |
+ echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG"
+ docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$RELEASE_TAG
+
+defaults_deploy_prequisites: &defaults_deploy_prequisites
+ name: Copy deployment pre-requisites from S3 bucket
+ command: |
+ if [ -z "$K8_USER_TOKEN" ];
+ then
+ echo "Copying K8 keys into $AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS folder"
+ mkdir $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS
+ aws s3 cp $AWS_S3_URI_DEVOPS_DEPLOYMENT_CONFIG/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/$K8_USER_PEM_KEY_FILENAME $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/
+ aws s3 cp $AWS_S3_URI_DEVOPS_DEPLOYMENT_CONFIG/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/$K8_USER_PEM_CERT_FILENAME $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/
+ else
+ echo "Skipping K8 keys into $AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS folder"
+ fi
+
+ echo "Copying Helm value file into $AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM folder for $K8_RELEASE_NAME release"
+ mkdir $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM
+ aws s3 cp $AWS_S3_URI_DEVOPS_DEPLOYMENT_CONFIG/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM/$HELM_VALUE_FILENAME $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM/
+
+defaults_deploy_config_kubernetes_cluster: &defaults_deploy_config_kubernetes_cluster
+ name: Configure Kubernetes cluster
+ command: |
+ echo "Configure Kubernetes cluster ${K8_CLUSTER_NAME}"
+ kubectl config set-cluster $K8_CLUSTER_NAME --server=$K8_CLUSTER_SERVER --insecure-skip-tls-verify=true
+
+defaults_deploy_config_kubernetes_credentials: &defaults_deploy_config_kubernetes_credentials
+ name: Configure Kubernetes credentails
+ command: |
+ echo "Configure Kubernetes credentials ${K8_USER_NAME}"
+ if [ ! -z "$K8_USER_TOKEN" ];
+ then
+ echo "Configure Kubernetes credentials ${K8_USER_NAME} using Token"
+ kubectl config set-credentials $K8_USER_NAME --token=$K8_USER_TOKEN
+ else
+ echo "Configure Kubernetes credentials ${K8_USER_NAME} using Certs"
+ kubectl config set-credentials $K8_USER_NAME --client-certificate=$CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/$K8_USER_PEM_CERT_FILENAME --client-key=$CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_KEYS/$K8_USER_PEM_KEY_FILENAME
+ fi
+
+defaults_deploy_config_kubernetes_context: &defaults_deploy_config_kubernetes_context
+ name: Confi gure Kubernetes context
+ command: |
+ echo "Configure Kubernetes context ${K8_CLUSTER_NAME}"
+ kubectl config set-context $K8_CLUSTER_NAME --cluster=$K8_CLUSTER_NAME --user=$K8_USER_NAME --namespace=$K8_NAMESPACE
+
+defaults_deploy_set_kubernetes_context: &defaults_deploy_set_kubernetes_context
+ name: Set Kubernetes context
+ command: |
+ echo "Configure Kubernetes context ${K8_CLUSTER_NAME}"
+ kubectl config use-context $K8_CLUSTER_NAME
+
+defaults_deploy_configure_helm: &defaults_deploy_configure_helm
+ name: Configure Helm
+ command: |
+ helm init --client-only
+
+defaults_deploy_install_or_upgrade_helm_chart: &defaults_deploy_install_or_upgrade_helm_chart
+ name: Install or Upgrade Helm Chart
+ command: |
+ echo "Install or Upgrade Chart ${K8_RELEASE_NAME} for Docker Image ${DOCKER_ORG}/${CIRCLE_PROJECT_REPONAME}:${CIRCLE_TAG}"
+ if [ -z "$(helm list -q | grep -E "^${K8_RELEASE_NAME}$")" ] && [ "$(helm list -q | grep -E "^${K8_RELEASE_NAME}$")" != "Error: Unauthorized" ];
+ then
+ echo "Installing ${K8_RELEASE_NAME} new release"
+ helm install --namespace=$K8_NAMESPACE --name=$K8_RELEASE_NAME --repo=$K8_HELM_REPO --version $K8_HELM_CHART_VERSION $HELM_VALUE_SET_VALUES -f $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM/$HELM_VALUE_FILENAME $K8_HELM_CHART_NAME
+ else
+ echo "Upgrading ${K8_RELEASE_NAME} release"
+ helm upgrade $K8_RELEASE_NAME --repo=$K8_HELM_REPO --version $K8_HELM_CHART_VERSION --reuse-values $HELM_VALUE_SET_VALUES -f $CIRCLE_WORKING_DIRECTORY/$AWS_S3_DIR_DEVOPS_DEPLOYMENT_CONFIG_HELM/$HELM_VALUE_FILENAME $K8_HELM_CHART_NAME
+ fi
+
+defaults_slack_announcement: &defaults_slack_announcement
+ name: Slack announcement for tag releases
+ command: |
+ curl -X POST \
+ $SLACK_WEBHOOK_ANNOUNCEMENT \
+ -H 'Content-type: application/json' \
+ -H 'cache-control: no-cache' \
+ -d "{
+ \"text\": \"*${CIRCLE_PROJECT_REPONAME}* - Release \`${CIRCLE_TAG}\`: https://github.com/mojaloop/${CIRCLE_PROJECT_REPONAME}/releases/tag/${CIRCLE_TAG}\"
+ }"
+
+jobs:
+ setup:
+ <> $BASH_ENV
+ - run:
+ <> $BASH_ENV
+ - run:
+ <> $BASH_ENV
+ - run:
+ <> $BASH_ENV
+ echo 'export K8_CLUSTER_SERVER=$K8_CLUSTER_SERVER_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_RELEASE_NAME=$K8_RELEASE_NAME_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_NAMESPACE=$K8_NAMESPACE_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_USER_NAME=$K8_USER_NAME_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_USER_TOKEN=$K8_USER_TOKEN_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_HELM_CHART_NAME=$K8_HELM_CHART_NAME_SNAPSHOT' >> $BASH_ENV
+ echo 'export K8_HELM_CHART_VERSION=$K8_HELM_CHART_VERSION_SNAPSHOT' >> $BASH_ENV
+ echo 'export HELM_VALUE_SET_VALUES="--set central.centralhub.centralledger.containers.api.image.repository=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME --set central.centralhub.centralledger.containers.api.image.tag=$CIRCLE_TAG --set central.centralhub.centralledger.containers.admin.image.repository=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME --set central.centralhub.centralledger.containers.admin.image.tag=$CIRCLE_TAG"' >> $BASH_ENV
+ - run:
+ <> $BASH_ENV
+ echo 'export K8_CLUSTER_SERVER=$K8_CLUSTER_SERVER_PROD' >> $BASH_ENV
+ echo 'export K8_RELEASE_NAME=$K8_RELEASE_NAME_PROD' >> $BASH_ENV
+ echo 'export K8_NAMESPACE=$K8_NAMESPACE_PROD' >> $BASH_ENV
+ echo 'export K8_USER_NAME=$K8_USER_NAME_PROD' >> $BASH_ENV
+ echo 'export K8_USER_TOKEN=$K8_USER_TOKEN_PROD' >> $BASH_ENV
+ echo 'export K8_HELM_CHART_NAME=$K8_HELM_CHART_NAME_PROD' >> $BASH_ENV
+ echo 'export K8_HELM_CHART_VERSION=$K8_HELM_CHART_VERSION_PROD' >> $BASH_ENV
+ echo 'export HELM_VALUE_SET_VALUES="--set central.centralhub.centralledger.containers.api.image.repository=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME --set central.centralhub.centralledger.containers.api.image.tag=$CIRCLE_TAG --set central.centralhub.centralledger.containers.admin.image.repository=$DOCKER_ORG/$CIRCLE_PROJECT_REPONAME --set central.centralhub.centralledger.containers.admin.image.tag=$CIRCLE_TAG"' >> $BASH_ENV
+ - run:
+ <
Dockerfile
.DS_Store
.gitignore
+.circleci
\ No newline at end of file
`gitbook install`
-`npm run docs:install`
+`npm run gitbook:install`
## To serve gitbook documentation
`gitbook serve --port 8989`
-`npm run docs:serve`
+`npm run gitbook:serve`
## Generate PDF
1. Install Calibre: https://calibre-ebook.com/download
-2. Run `npm run docs:export:pdf`
+2. Run `npm run gitbook:export:pdf`
A file `book.pdf` will be generated in the root directory
## Known Issues
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
-- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
\ No newline at end of file
+- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
+
+
+## Docker
+
+### Build
+
+`docker build --no-cache -t mojaloop/documentation .`
+
+### Push
+
+`docker push mojaloop/documentation`
+
+### Run
+
+`docker run --rm -it --name mojadoc -p 8989:8989 mojaloop/documentation`
+FROM mhart/alpine-node:10.15.1
+
+WORKDIR /opt/gitbook
+COPY . /opt/gitbook
+
+RUN apk add --no-cache -t build-dependencies openjdk8-jre git make gcc g++ python libtool autoconf automake
+
+WORKDIR /opt/gitbook/repo
+
+RUN npm install
+
+RUN apk del build-dependencies
+
+EXPOSE 8989
+
+CMD npm run docs:serve
A file `book.pdf` will be generated in the root directory
## Known Issues
- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
+- removed `"gitbook-pdf": "^0.0.2",` as a dependency from package.json. Please manually install `gitbook-pdf` until the issue can be resolved
\ No newline at end of file
`gitbook serve --port 8989`
`npm run docs:serve`
+
+## Generate PDF
+
+### Prerequisites
+
+1. Install Calibre: https://calibre-ebook.com/download
+
+2. Run `npm run docs:export:pdf`
+
+A file `book.pdf` will be generated in the root directory
+
+## Known Issues
+
+- `npm install` fails for the `gitbook-pdf` dependency. Here is a work-around: https://github.com/GitbookIO/gitbook-pdf/issues/23
node_modules
# Gitbook
_book
-.gitbook
\ No newline at end of file
+
+# Gitbook UML
+**/uml
* [Fraud Services](mojaloop-technical-overview/fraud-services.md)
* [APIs](api/README.md)
* [Mojaloop](api/mojaloop-api-specification.md)
- * [ALS Oracle Service](api/als-oracle-api-specification.md)
+ * [ALS Oracle](api/als-oracle-api-specification.md)
* [Repo Details](repositories/README.md)
- * [helm](repositories/helm.md)
- * [project](repositories/project.md)
+ * [Helm](repositories/helm.md)
+ * [Project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
* [Changelog](changelog.md)
+# APIs Specifications
+
+## Mojaloop API
+
+Documentation: [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf)
+* [Mojaloop API Specification](./mojaloop-api-specification.md)
+
+## ALS Oracle API
+
+Documentation: [ALS Design](../mojaloop-technical-overview/account-lookup-service.md)
+
+* [ALS Oracle API Specification](./mojaloop-api-specification.md)
+
\ No newline at end of file
autonumber
actor "Payer FSP" as PAYER_FSP
boundary "Account Lookup Service" as ALS_API
control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
-entity "ALS Participant Config DAO" as ALS_PARTICIPANT_CONFIG_DAO
+entity "ALS Type Config DAO" as ALS_TYPE_ENDPOINT_CONFIG_DAO
+entity "ALS CentralService Endpoint DAO" as ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+entity "ALS Participant End-Point Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
database "ALS Database" as ALS_DB
boundary "Oracle Service API" as ORACLE_API
-entity "Oracle Participant Handler" as ORACLE_PARTICIPANT_HANDLER
-entity "Oracle Participant DAO" as ORACLE_PARTICIPANT_DAO
boundary "Oracle Registry Store" as ORACLE_STORE
boundary "Central Service API" as CENTRALSERVICE_API
box "Account Lookup Service" #LightYellow
participant ALS_API
participant ALS_PARTICIPANT_HANDLER
-participant ALS_PARTICIPANT_CONFIG_DAO
+participant ALS_TYPE_ENDPOINT_CONFIG_DAO
participant ALS_PARTICIPANT_ORACLE_DAO
participant ALS_DB
+participant ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
end box
box "Central Services" #LightGreen
end box
box "ALS Oracle Service/Adapter" #LightBlue
participant ORACLE_API
-participant ORACLE_PARTICIPANT_HANDLER
-participant ORACLE_PARTICIPANT_DAO
end box
box "Internal/External Oracle Data Store/Service" #LightGrey
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification
- ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
- activate ALS_PARTICIPANT_CONFIG_DAO
+ ALS_PARTICIPANT_HANDLER -> ALS_TYPE_ENDPOINT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ALS_TYPE_ENDPOINT_CONFIG_DAO
- ALS_PARTICIPANT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
activate ALS_DB
hnote over ALS_DB #lightyellow
oracleEndpoint
endpointType
end note
- ALS_DB -> ALS_PARTICIPANT_CONFIG_DAO: return oracleEndpoint result set
+ ALS_DB -> ALS_TYPE_ENDPOINT_CONFIG_DAO: return oracleEndpoint result set
deactivate ALS_DB
- ALS_PARTICIPANT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
- deactivate ALS_PARTICIPANT_CONFIG_DAO
+ ALS_TYPE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_TYPE_ENDPOINT_CONFIG_DAO
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
alt {CURRENCY} not Provided OR no matching currency found in list of End-points
group Get Participant's FSP Details
ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
activate ALS_PARTICIPANT_ORACLE_DAO
ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
-
activate ORACLE_API
- ORACLE_API -> ORACLE_PARTICIPANT_HANDLER: Fetch Participant information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
- activate ORACLE_PARTICIPANT_HANDLER
- ORACLE_PARTICIPANT_HANDLER -> ORACLE_PARTICIPANT_HANDLER: Validate request against ALS Oracle Interface Specification
- ORACLE_PARTICIPANT_HANDLER -> ORACLE_PARTICIPANT_DAO: Fetch Participant information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
- activate ORACLE_PARTICIPANT_DAO
- ORACLE_PARTICIPANT_DAO -> ORACLE_STORE: Fetch Participant information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+
+ ORACLE_API -> ORACLE_STORE: Resolve participant's FSP details
activate ORACLE_STORE
- ORACLE_STORE -> ORACLE_PARTICIPANT_DAO: Return list of Participant information
+ ORACLE_STORE -> ORACLE_API: Return participant's FSP details
deactivate ORACLE_STORE
- ORACLE_PARTICIPANT_DAO -> ORACLE_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
- deactivate ORACLE_PARTICIPANT_DAO
- ORACLE_PARTICIPANT_HANDLER -> ORACLE_API: Return list of Participant information. \nError code: 3200
- deactivate ORACLE_PARTICIPANT_HANDLER
ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information. \nError code: 3200
deactivate ORACLE_API
group Get Participant's FSP Details
ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
deactivate ALS_PARTICIPANT_ORACLE_DAO
- activate ALS_API
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_PUT`
+
ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information. \nError code: 3200
- activate ALS_PARTICIPANT_HANDLER
+ activate ALS_API
ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}?currency={CURRENCY}
+ deactivate ALS_API
else Empty list of End-Points returned or Error occured
+
+ ALS_PARTICIPANT_HANDLER -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: Retrieve the Participant Callback End-point. \nError code: 3200
+ activate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> CENTRALSERVICE_API: Retrieve the Participant Callback End-point - GET /participants/{FSPIOP-Source}/endpoints. \nError code: 3200
+ activate CENTRALSERVICE_API
+ CENTRALSERVICE_API -> ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO: List of Participant Callback End-points
+ deactivate CENTRALSERVICE_API
+ ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of Participant Callback End-points
+ deactivate ALS_CENTRALSERVICE_ENDPOINT_CONFIG_DAO
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Match Participant Callback End-points for `FSPIOP_CALLBACK_URL_PARTICIPANT_ERROR`
+
ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 3200
activate ALS_API
ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
This component (or back-end systems) will also be responsible for the persistenc
### 2.2 Sequence diagram
-Work in progress..
+```puml { src="./assets/Diagrams/SequenceDiagrams/seq-acct-lookup-get-participant-7.1.0.plantuml" }
+```
## 3. Party Lookup Design
`gitbook install`
+`npm run docs:install`
+
## To serve gitbook documentation
`gitbook serve --port 8989`
+
+`npm run docs:serve`
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
\ No newline at end of file
The purpose of this document is to provide;
## Helm Chart Overview
-Helm chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo) <- Helm repo to be added to config Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm) <- Location for source and values.yaml\(configs\)
+* Helm Chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo)
+* Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm)

* [Contributors Guide](contributors-guide/README.md)
* [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
* [Current Version](contributors-guide/mojaloop-deployment/current-versions.md)
- * [Standards](contributors-guide/standards.md)
+ * [Standards](contributors-guide/standards/README.md)
+ * [Versioning](contributors-guide/standards/versioning.md)
+ * [Creating new Features](contributors-guide/standards/creating-new-features.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
+ * [Code Quality Metrics](contributors-guide/tools-and-technologies/code-quality-metrics.md)
* [Automated Testing](contributors-guide/tools-and-technologies/automated-testing.md)
- * [Documentation](contributors-guide/documentation.md)
+ * [Documentation](contributors-guide/documentation/README.md)
+ * [API Documentation](contributors-guide/documentation/api-documentation.md)
+ * [Documentation Style Guide](contributors-guide/documentation/documentation-style-guide.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
* [Core Scenarios](mojaloop-background/core-scenarios.md)
### \* Review the [Mojaloop Deployment](mojaloop-deployment/#mojaloop-deployment) Guide
-### \* Get familiar with our [Standards](standards.md) on contributing to this project
+### \* Get familiar with our [Standards](standards/) on contributing to this project
### \* View the project board and work on your [good first issue](https://github.com/mojaloop/project/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)
+# Documentation
+
+### Overview
+
+Mojaloop has set forward several standards to ensure that documentation throughout the project is consistent and kept up to date.
+
+* All documentation that is relevant for contributors is kept on the "documentation" repository.
+* The "documentation" repository is sync'ed with GitBook and all content is consumed in an easily readable format on: [https://www.gitbook.com/mojaloop](https://www.gitbook.com/mojaloop)
+* All documentation should include:
+ * Overview: business overview to provide the value or reason for the documentation page
+ * Details: appropriate summary information to support the documentation
+
+###
+
+[Documentation standards](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-and-Template-Standards.md)
+
+### Documentation Style Guide
+
+All new documentation should confirm to the documentation and styles as discussed [here](documentation-style-guide.md).
+
+### Code Style Guide
+
+#### NodeJS
+
+We follow the [Standard style guidelines](https://github.com/feross/standard). Add `npm install standard` to you package.json.
+
+#### Java
+
+For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
+
+###
+
+# API Documentation
+
+All APIs should be documented in RAML or Swagger, see Architecture-Documentation-Guidelines\]\(Architecture-Documentation-Guidelines.md\)
+
+
+
+**Section Headings**
+
+* Do not number headings - for example, "Prepare and Fulfill", not "C - Prepare and Fulfill"
+* Make sure section headings \(\# \) match the heading to which they correspond in the comprehensive PDF \(built from the [dactyl config file](https://github.com/Mojaloop/Docs/blob/master/ExportDocs/dactyl-config.yml)\)
+* Do not include the word "documentation" in headings
+
+#### Retrievability
+
+* For sections that contain many subsections of endpoints or methods, provide a table of contents at the beginning of the section
+* Don't say the word project; use component, microservice, interfaces, etc
+
+#### Language
+
+Instead of the word "project," use a specific noun such as component, microservice, or interface.
+
+#### Procedures
+
+* Introduce procedures with H3 \(\#\#\#\) or H4 \(\#\#\#\#\) headers \(not H2 \(\#\#\)\).
+* Do not use numbers in procedure section headings.
+* Use ordered-list tagging for procedure steps. For example:
+* Step 1
+* Step 2
+* Step 2
+
+# Documentation Style Guide
+
+In most cases, Mojaloop follows the latest edition of the Associated Press Stylebook. The following are foundation-specific guidelines which have been updated and slightly modified.
+
+#### Acronyms
+
+Spell out all acronyms on first reference. Include the acronym in parentheses immediately after the full spelling only if you refer to it again in the document. Example: _Kofi Annan, chairman of the board of the Alliance for a Green Revolution in Africa \(AGRA\), traveled to Nairobi this month. It was his first visit to the AGRA office._
+
+#### Ampersand
+
+Only use an ampersand \(&\) when it's part of a formal name like the Bill & Melinda Gates Foundation. In all other cases, spell out and.
+
+#### Bill & Melinda Gates Foundation
+
+Our formal legal name is the Bill & Melinda Gates Foundation. Use it on first reference. Always use the ampersand \(&\) and always capitalize Foundation when Bill & Melinda Gates comes before it.
+
+Never abbreviate the foundation's name as _BMGF_.
+
+Never translate the foundation name into other languages, as it is a proper noun. The one exception to this is when translating the foundation's name into Chinese, in which case translation is acceptable.
+
+Do not capitalize foundation when the word stands alone. Example: _The foundation's new headquarters will be built near Seattle Center._
+
+Use Gates Foundation only if you are sure the context makes the foundation's identity clear. There is a Gates Family Foundation in Colorado, so we need to be careful. Example: _The Bill & Melinda Gates Foundation and the Ford Foundation co-sponsored the event. A Gates Foundation staff member gave closing remarks._
+
+The entity that manages the endowment is formally and legally known as the Bill & Melinda Gates Foundation Trust. You will not need to refer to this entity often, but when you do, write it out on first reference and refer to it as the asset trust thereafter.
+
+#### Bold and colons
+
+Frequently I see structures \(like in this very comment!\) where you have introductory terms or phrases that are bolded and set apart from the contents with a colon. Should the colon also be bolded, or not? \(I frequently see it done both ways.\)
+
+#### Buffett
+
+Note the spelling: two fs and two ts \(_i.e., Warren Buffett_\).
+
+#### Bulleted lists
+
+Introduce bulleted lists with a colon when the listed items complete the lead-in sentence or phrase. Exception: never use colons in headings or subheadings to introduce bulleted lists.
+
+Capitalize the first words of and use periods with listed items only if they are full sentences. Examples:
+
+* _This is a complete sentence._
+* _not a complete sentence_
+
+Never link items in a bulleted list with coordinating conjunctions and punctuation \(semicolons or commas\) as you would in a sentence-style list. In other words, never do:
+
+* _this,_
+* _that, or_
+* _the other thing._
+
+#### Captions
+
+Caption photos whenever possible. It helps people understand our work.
+
+Write captions as single gerund \(_ing verb_\) phrases, followed by the city, state or country, and year the photo was taken in parentheses. Example: _A doctor preparing a vaccine for delivery_ \(Brazzaville, Congo, 2007\).\_
+
+When writing a caption, be sure to introduce the people featured and explain what's happening in the image as it relates to our areas of focus. Be as brief as possible so you don't distract from the image or layout. Avoid verbs that state the obvious about what the photo's subject is doing _\(e.g., smiling, standing, and so on\)._
+
+If one of the co-chairs appears in a photo with other people, be sure to identify the co-chair in the caption. Don't assume everyone knows what our co-chairs look like.
+
+#### Citations
+
+Most fields have their own citation conventions. Adopt those used by the field in question. When citation conventions are unavailable or uncertain, follow The Chicago Manual of Style.
+
+When a document uses both footnotes and endnotes, for the footnotes, use the following symbols:
+
+* 1st note = \* \(asterisk\)
+* 2nd note = † \(dagger\)
+* 3rd note = ‡ \(double dagger\)
+* 4th note = § \(section sign\)
+* 5th note = \*\* \(2 asterisks\)
+* 6th note = †† \(2 daggers\)
+* 7th note = ‡‡ \(2 double daggers\)
+* 8th note = §§ \(2 section signs\)
+
+Separate multiple superscript references \(footnotes, endnotes\) with commas, not semicolons.
+
+#### Clinical trials
+
+Use Roman numerals when referring to clinical trial phases and always capitalize Phase. Example: The company will begin Phase III trials on the new drug this spring.
+
+#### Contact information
+
+Use periods to separate parts of phone numbers, and begin each number with a plus sign.
+
+Because we work with people throughout the world, omit the international access code, which differs from country to country \(it's 011 in the United States\). Examples: _+1.206.709.3100 \(United States\)_ _+91.11.4100.3100 \(India\)_
+
+#### Copyright and trademark notice
+
+All publications, media, and materials produced by or for the foundation should contain the notice shown below. The Legal team must approve all exceptions.
+
+ _© \(year\) Bill & Melinda Gates Foundation. All Rights Reserved._ Bill & Melinda Gates Foundation is a registered trademark in the United States and other countries.
+
+When possible, begin the trademark portion of the notice on a separate line.
+
+#### Dashes
+
+Use dashes—those the width of a capital M—to indicate asides or abrupt changes in thought. Use en dashes—those the width of a capital N—with numerical ranges.
+
+Do not include a space before or after a dash.
+
+Examples: _We work to make safe, affordable financial services—particularly savings accounts—more widely available to people in developing countries._
+
+_In the 2004 presidential election, 76 percent of U.S. college graduates ages 25-44 voted._
+
+#### Dollars \($\)
+
+In Global Health and Global Development materials, because more than a dozen countries use dollars, specify U.S. dollars in parentheses on first mention in a document. Example: _$100,000 \(U.S.\)_. Omit the parenthetical U.S. in subsequent references to dollar amounts in the same document.
+
+#### Foundation program names
+
+We have three programs: Global Development Program, Global Health Program, and United States Program.
+
+_Program_ is capitalized when used with the full name \(Global Development Program\), but not when used alone \(The program makes grants in several areas.\).
+
+Use periods when abbreviating the name of the United States Program: U.S. Program.
+
+GH, GD, and USP are fine for internal use, but inappropriate for external publications.
+
+#### Gates family
+
+William Gates III is formally referred to as Bill Gates. In internal documents, use Bill—not a nickname or abbreviation.
+
+Use Melinda Gates when formally referring to Melinda.
+
+Use William H. Gates Sr. when formally referring to Bill Gates Sr. There is no comma between Gates and Sr. Bill Sr. is acceptable in internal documents.
+
+Plural: Gateses. Do not use an apostrophe to form the plural of the family's name. Example: The Gateses attended the opening of the new University of Washington law building.
+
+Possessive: The apostrophe follows Gates when you refer to something owned by either Bill or Melinda. Example: Melinda Gates' speech was well received. The apostrophe follows Gateses when you refer to something Bill and Melinda own jointly. Example: _The Gateses' decision to provide free Internet access in U.S. public libraries has increased library usage and circulation overall._
+
+You may also phrase it this way: Bill and Melinda Gates' decision to provide free Internet access …
+
+See the Titles of people entry for the formal titles of Bill, Melinda, Bill Sr., and other leaders of the foundation.
+
+#### Hyphens
+
+There are few hard-and-fast rules when it comes to hyphens. Generally we use them to enhance the reader's understanding.
+
+Examples: _When writing for the Bill & Melinda Gates Foundation, use real-world poverty examples to illustrate your point._ _When writing for the Bill & Melinda Gates Foundation, use real world-poverty examples to illustrate your point._
+
+In the first example, the hyphen in real-world connects real and world to form a single adjective describing poverty. In the second example, the hyphen in world-poverty connects world and poverty to form a single adjective describing examples.
+
+The meaning changes depending on the placement of the hyphen. In instances where a series of adjectives creates ambiguity about what they refer to, use a hyphen to clarify the intended meaning.
+
+When capitalizing hyphenated words, only capitalize the first part. Example: _Co-chairs Bill and Melinda Gates._
+
+For other uses of hyphens—compound modifiers, prefixes and suffixes, fractions—refer to the Associated Press Stylebook.
+
+#### Numerals
+
+When referring to dollar figures, spell out million and billion. Use figures and decimals \(not fractions\). Do not go beyond two decimal places. Example: _The foundation granted .45 million to United Way._
+
+When using numbers that have nothing to do with dollar figures or percentages, write them out if they are under 10, and use numerals if they are 10 or over. Example: Four program officers went on 13 site visits.
+
+In cases of grammatical parallelism, parallel construction always trumps this rule. For instance: Mr. Johnson has two children, 5-year-old Kyle and 13-year-old Frances.
+
+Never begin a sentence with a numeral. Either spell the number out or revise the sentence so it doesn't begin with a number.
+
+#### Percentages
+
+When using percentages, write out percent \(don't use %\). Use numerals instead of writing numbers out, even if they're less than 10.
+
+Example: _This program accounts for 6 percent of our grantmaking._
+
+#### Photographer credits
+
+If the foundation owns the image you are using, you don't need to credit the photographer. All images in our media asset management system are foundation-owned. If the foundation has purchased a license to use the image, you may need to credit the photographer. If you have questions about photo credit requirements, contact the Foundation Communications Service Desk.
+
+#### Plain language
+
+We could call out a few specific constructions that are needlessly wordy. One that we frequently catch at Ripple is "in order to" instead of just "to."
+
+#### Quotation marks
+
+Use double quotation marks for dialogue and the citation of printed sources. Limit use of scare quotes—quotation marks meant to call attention to a quoted word or phrase and distance the author from its meaning, typically because the language is specialized, idiomatic, ironic, or misused. Example: _The foundation has increasingly used “program-related investments” in recent years._
+
+#### Quoted strings and punctuation
+
+When describing exact strings in technical documentation, should punctuation \(not part of the literal strings\) be included in the quotation marks? For example, valid states include "pending," "in progress," and "completed."
+
+#### Scientific names
+
+Capitalize and italicize scientific names in accordance with conventions in the scientific community. Use the full version of a scientific name on first mention and the abbreviated form thereafter. For example, _use Salmonella typhi first and S. typhi for each additional reference._
+
+#### Serial commas
+
+With lists of three or more items in a sentence, add a final comma before the coordinating conjunction and or or. Example: _The foundation's three program areas are Global Development, Global Health, and the United States._
+
+#### Spacing after punctuation
+
+Use only one space after punctuation, including periods, colons, and semicolons.
+
+#### Spelling and capitalization conventions
+
+_bed net:_ two words, no hyphen.
+
+_email:_ one word, no hyphen, lowercase.
+
+_foundation:_ lowercase, except as part of the full foundation name.
+
+_grantmaking:_ one word, no hyphen.
+
+_nongovernmental:_ one word, no hyphen.
+
+_nonprofit:_ one word, no hyphen.
+
+_postsecondary:_ one word, no hyphen.
+
+_Washington state:_ lowercase state \(unless you're referring to Washington State University, the Washington State Legislature, or something similar\).
+
+_website:_ one word, lowercase
+
+#### Titles of people
+
+Formal titles should not be capitalized unless the title precedes a person's name or appears in a headline. Example: _Co-chair Melinda Gates will speak at the Washington Economic Club this year._
+
+Lowercase and spell out titles when they are not used with an individual's name. Example: _The foundation co-chair issued a statement._
+
+Lowercase and spell out titles in constructions that use commas to set them off from a name. Example: _Bill Gates, co-chair of the foundation, commented on the grant._
+
+#### United States
+
+Spell out United States when using it as a noun. Abbreviate it as U.S. \(including periods\) when using it as an adjective. In certain cases, as when referring to a person from the United States, it's acceptable to use American.
+
+Examples: _The U.S. State Department is in the United States._ _The foundation's U.S. Program…_
+
+#### URL
+
+Reference web addresses without the http:// as follows: _www.gatesfoundation.org_
+
# Current Version
-Current versions A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
+A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
-At of March 2019, the active releases for core central services are as below
+At of March 6th 2019, the active releases for core central services are as below
-* helm: v5.2.0
-* central-ledger: v5.2.0
-* ml-api-adapter: v5.2.0
+* helm: **v5.2.0**
+* central-ledger: v5.3.0
+* ml-api-adapter: v5.2.1
* central-settlement: v5.2.0
-* central-event-processor: v5.2.0
-* email-notifier: v5.2.0
-
+* central-event-processor: v5.3.0
+* email-notifier: v5.3.0
+# Standards
+
+## Standards
+
+### Standards for adopting an Open Source contribution into Mojaloop
+
+This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
+
+#### Prerequisites
+
+1. The contribution should be in-line with the LevelOne Principles
+2. Basic guidelines regarding status of the contribution \(Code-base / Standards / Designs / Specifications\)
+3. Basic documentation to get started
+
+#### Guidelines regarding adoption
+
+1. Create a private repo on the Mojaloop GitHub organization
+2. Have a sub-team of the DA take a look to make sure its portable \(to OSS\) - aligns with L1P principles, etc, and ensure design is in line with standards
+3. Check Licensing
+4. Assess Performance impact
+5. Create action items \(stories\) to update naming, remove/sanitize any items that are not generic
+6. Configuration for 'modes of operation'
+7. Enable CI/CD pipeline
+
+### Versioning
+
+Review the information on [versioning](versioning.md) for Mojaloop.
+
+### Creating new Features
+
+Process for creating new [features and branches](creating-new-features.md) in Mojaloop.
+
+### Pull Request Process
+
+It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
+
+### Code of conduct
+
+We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
+
+### Licensing
+
+See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+##
+
+# Creating new Features
+
+### Fork
+
+Fork the Mojaloop repository into your own personal space. Ensure that you keep the `master` branch in sync.
+
+Refer to the following documentation for more information: [https://help.github.com/articles/fork-a-repo/](https://help.github.com/articles/fork-a-repo/)
+
+1. Clone repo using Git Fork button \(refer to the above documentation for more information\)
+2. Clone your forked repo: `git clone https://github.com//.git`
+3. Synchronise your forked repo with Mojaloop
+
+ Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
+
+ You should now see that you have two remotes:
+
+ ```bash
+ git remote -v
+ origin https://github.com//.git (fetch)
+ origin https://github.com//.git (push)
+ mojaloop https://github.com/mojaloop/.git (fetch)
+ mojaloop https://github.com/mojaloop/.git (push)
+ ```
+
+4. To sync to your current branch: `git pull mojaloop ` This will merge any changes from Mojaloop's repo into your forked repo.
+5. Push the changes back to your remote fork: `git push origin `
+
+### Creating a Branch
+
+Create a new branch from the `master` branch with the following format: `/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
+
+1. Create and checkout the branch: `git checkout -b /`
+2. Push the branch to your remote: `git push origin /`
+
+Where `` can be one of the following:
+
+| branchType | Description |
+| :--- | :--- |
+| feature | Any new or maintenance features that are in active development. |
+| hotfix | A hotfix branch is for any urgent fixes. |
+| release | A release branch containing a snapshot of a release. |
+| backup | A temporary backup branch. Used normally during repo maintenance. |
+
+### Merge into Mojaloop Repo
+
+Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
+
+# Versioning
+
+## Versioning of releases made for core Switch services
+
+This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
+
+### Versioning Strategy
+
+1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
+2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
+3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
+
+### Current Version
+
+The currrent version information for Mojaloop can be found [here](../mojaloop-deployment/current-versions.md).
+
+### Notes
+
+1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
+2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+###
+
Here we document the reasoning behind certain tools, technology and process choi
* **Agile development** - This methodology is used to track and run the project. The requirements need to be refined as the project is developed, therefore we picked agile development over waterfall or lean.
* **APIs** - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our [Pragmatic REST](pragmatic-rest.md) design pattern. APIs will be defined using OpenAPI or RAML. Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
-* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](automated-testing.md).
+* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](automated-testing.md) and [code quality metrics](code-quality-metrics.md) for standards.
* **Hosting** - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.
* **Interledger** – Mojaloop needed a lightweight, open, and secure transport protocol for funds. [Interledger.org](http://Interledger.org) provides all that. It also provides the ability to connect to other systems. We also considered block chain systems, but block chain systems send very large messages which will be harder to guarantee delivery of in third world infrastructure. Also, while blockchain systems provide good anonymity, that is not a project goal. To enable fraud detection, regulatory authorities need to be able to request records of transfers by account and person.
* **Open source** - The entire project has been released as open source in accordance with the [Level One Project principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf). All tools and processes must be open source friendly and support projects that use an Apache 2.0 license with no restrictive licenses requirements on developers.
+# Code Quality Metrics
+
+## Functional quality metrics
+
+### Unit test metrics
+
+High coverage and low dependencies show that the code is testable and therefore well isolated and easy to maintain. Low complexity also makes code readable and maintainable and helps enforce single responsibility. Real unit tests run very fast as they don't call external components.
+
+| Code Quality Metrics | New and Project Code |
+| :--- | :--- |
+| Unit test coverage | >= 80% block coverage |
+| Unit test speed | <= 10 seconds |
+| Dependencies/method | <= 10 |
+| Complexity/method | <= 7 |
+
+### Component
+
+Functional testing typically covers pair combinations of the system states.
+
+### Integration
+
+Functional tests have one test per message and error. Messages and errors that are handled the same way use the same test.
+
+### Contract
+
+Limited to what the consuming teams need that isn't covered by existing unit, component, and integration tests. Often added to over time.
+
+### End to End
+
+End to end tests cover acceptance tests from scenarios.
+
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
/assets/.gitkeep b/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve the PUT end-point)A1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 8. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve both the POST and PUT end-points)A1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A7. User Lookup GET /parties/<idType>/<id>A7. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A9. User Lookup PUT /parties/<idType>/<id>A9. User Lookup <br>PUT /parties/<idType>/<id>A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+ Settlements Engine[Not supported by viewer]A.3. Store SettlementB.3. Retrieve Settlement DataD.3. Store Settlement Acks[Not supported by viewer]DBDB<alt> E.3 Position Update Failure Notification[Not supported by viewer]Central Services<font style="font-size: 20px">Central Services</font>Settlement Adapter<font style="font-size: 18px">Settlement Adapter</font>FSP[Not supported by viewer]E.3. Notification[Not supported by viewer]E.2 PositionUpdate Consumed[Not supported by viewer]positionspositions<br>Scheme Settlement ProcessorScheme Settlement Processor<br>Settlement APISettlement APISettlements HandlerSettlements HandlerHub Operator[Not supported by viewer]A.1 Create SettlementA.4. OK (201)[Not supported by viewer]A.2. Create SettlementB.2. Request Settlement ReportD.2. Process Settlement Acks[Not supported by viewer]B.1. Request Settlement ReportB.4. OK (200) - Settlement Report Received<b>B</b>.1. Request Settlement Report<br><b>B</b>.4. OK (200) - Settlement Report Received<br>D.1. Send Settlement AcknowledgementD.5. OK (200) - Provide Settlement Ack Result<alt> Error (5xx)[Not supported by viewer]E.1 Update Position[Not supported by viewer]Settlement ProcessesA. Create SettlementB. Request Settlement ReportC. Process SettlementD. Provider Sends through AcksE. Position Updates from Settlement[Not supported by viewer]C. Process Settlement<b>C</b>. Process SettlementSettlement Bank[Not supported by viewer]E.4 Position change due to Settlement[Not supported by viewer]OK (200)[Not supported by viewer]<alt> E.4 Position change failure fromSettlement[Not supported by viewer]notificationsnotificationsPositionHandlerPositionHandlerDBDBMojaloop Hub[Not supported by viewer]CentralEventProcessor[Not supported by viewer]NotificationAdapter/email, ml-api/[Not supported by viewer]
\ No newline at end of file
+
+
+Mojaloop AdapterMojaloop AdapterCentral-LedgerCentral-LedgerMojaloopAdapter[Not supported by viewer]C 1. TransferC 1. Transferrequest_to_preparerequest_to_prepareC 1.2[Not supported by viewer]C 1.3[Not supported by viewer]prepared.notificationprepared.notificationC 1.4C 1.4fulfiled.notificationfulfiled.notificationrequest_to_fulfilrequest_to_fulfilFulfil TransferFulfil TransferC 1.8C 1.8C 1.9[Not supported by viewer]C 1.10[Not supported by viewer]C 1.11C 1.11C 1.12 Fulfil NotifyC 1.12 Fulfil NotifyC 1.1C 1.1C 1.5C 1.5DBDBMojaloop Open Source Services[Not supported by viewer]positionspositionsAccount Lookup Service(Parties / Participant)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]A 2. MSISDN based lookupA 2. MSISDN <br>based lookupDBDB Database DatabaseFSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]AAA 1. User LookupA 1. User LookupA 3. Receiver DetailsA 3. Receiver DetailsBBMerchant Registry[Not supported by viewer]A 2. mID based lookupA 2. mID based <br>lookupB 1. QuoteB 1. QuoteMojaloop Hub<font>Mojaloop Hub<br></font>Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]LedgerLedger<br>LedgerLedger<br>CCkafkakafkakafkakafkakafkakafkakafkakafkakafkakafkaC 1.6PrepareTransfer[Not supported by viewer]C 1.7C 1.7C 1.11C 1.11C 1.12C 1.12Fulfil NotifyFulfil NotifyC 1.13Fulfil Notify[Not supported by viewer]B 2. Fee /Commission[Not supported by viewer]A 4. Get receiver details[Not supported by viewer]B 1. QuoteB 1. QuoteD 6.D 6.Central-SettlementCentral-SettlementD 5. Update Positions[Not supported by viewer]settlement.notificationssettlement.notificationskafkakafkaScheme Settlement Processor<span>Scheme Settlement Processor</span><br>Hub OperatorHub OperatorD 1. Create Settlement[Not supported by viewer]DDD 2. Query SettlementReport(Pull)[Not supported by viewer]D 4. SendAcks(Push)[Not supported by viewer]SettlementBankSettlement<br>Bank<br>D 3. Process Settlements[Not supported by viewer]Bank[Not supported by viewer]D 7. Position Notifications Change resultD 7. Position Notifications Change resultD 7. Settlement NotificationD 7. Settlement NotificationkafkakafkaGSMA[Not supported by viewer](Schema customised by Hub Operator)[Not supported by viewer]Pathfinder[Not supported by viewer]ALS Oracle MSISDN Adapter[Not supported by viewer]ALS Oracle Merchant Service[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+C 4. TransferFulfil Notify[Not supported by viewer]Account Lookup Services[Not supported by viewer]PathfinderPathfinderFSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]SchemeAdapter[Not supported by viewer]A 2. MSISDN based lookupA 2. MSISDN based lookupFSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]AAA 1. User LookupA 1. User <br>LookupBBMerchant Registry[Not supported by viewer]A 2. mID based lookupA 2. mID based lookupMojaloop Hub[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]LedgerLedger<br>LedgerLedger<br>CCC 1. Transfer Prepare[Not supported by viewer]A 3. ReceiverDetailsA 3. Receiver<br>Details<br> Fee /Comm[Not supported by viewer]Get ReceiverDetails[Not supported by viewer] C 2. TransferPrepare[Not supported by viewer]C 5. TransferFulfil Notify[Not supported by viewer]TransferPrepare[Not supported by viewer]C 3. TransferFulfilC 3. Transfer<br>Fulfil<br>TransferFulfil[Not supported by viewer]B 1. QuoteB 1. QuoteCentral Services[Not supported by viewer]B 1. QuoteB 1. Quote<br>Settlement ProviderSettlement ProviderHub OperatorHub OperatorD 1. Create SettlementD 1. Create SettlementDDD 2. Query Settlement Report(Pull)D 2. Query Settlement Report<br>(Pull)<br>D 3. Send Acknowledgements(Push)D 3. Send Acknowledgements<br>(Push)<br>TransfersSettlementsNotificationsMonitoringLogging[Not supported by viewer]
\ No newline at end of file
+
+
+Helm(Package Manager for K8s, Templatized Deployments and Configuration)[Not supported by viewer]Kubernetes(Abstraction layer for Infrastructure, Infrastructure as a Policy, Container Orchestration)[Not supported by viewer]Docker(Container Engine)[Not supported by viewer]Infrastructure(AWS, Azure, On-Prem)[Not supported by viewer]EFK - ElasticSearch / Fluentd / Kabana(Log Search / Collection / Monitoring)[Not supported by viewer]Promfana - Prometheus / Grafana(Log Search / Collection / Monitoring)[Not supported by viewer]Zipkin(Future - Distributed Tracing)[Not supported by viewer]Rancher(Infrastructure Management)[Not supported by viewer]PostgreSQL(Deprecated - Data)[Not supported by viewer]MongoDB(CEP - Data)[Not supported by viewer]MySQL(Percona - Data)[Not supported by viewer]Kafka(Message - Streaming)[Not supported by viewer]Mojaloop API Adapter(API - Transfers)[Not supported by viewer]Mojaloop API Adapter(Handler - Notifications)[Not supported by viewer]Central-Services(API - Operational Admin)[Not supported by viewer]Central-Services(Handler - Prepare)[Not supported by viewer]Central-Services(Handler - Position)[Not supported by viewer]Central-Services(Handler - Fulfil)[Not supported by viewer]Central-Services(Handler - Get Transfers)[Not supported by viewer]Central-Services(Handler - Timeout)[Not supported by viewer]Simulator(API - QA FSP Simulator)[Not supported by viewer]Forensic-Logging-Sidecar(Auditing)[Not supported by viewer]Central-KMS(Key Management Store)[Not supported by viewer]Central-Directory(Participant Lookup)[Not supported by viewer]Central-End-User-Registry(Custom Participant Store)[Not supported by viewer]Mock-Pathfinder(Mocked Pathfinder)[Not supported by viewer]Central-Event-Processor(CEP)[Not supported by viewer]Email-Notifier(Handler - Email)[Not supported by viewer]Central-Services(Handler - Admin)[Not supported by viewer]Central-Hub(Retired - Operational Web Interface)[Not supported by viewer]Interop-Switch(To be Retired - Transfers, Quotes, Parties, Participants)[Not supported by viewer]Circle-CI(Test, Build, Deploy)[Not supported by viewer]Docker Hub(Container Repository)[Not supported by viewer]NPM Org(NPM Repository)[Not supported by viewer]
\ No newline at end of file
+
+
+Helm(Package Manager for K8s, Templatized Deployments and Configuration)[Not supported by viewer]Kubernetes(Abstraction layer for Infrastructure, Infrastructure as a Policy, Container Orchestration)[Not supported by viewer]Docker(Container Engine)[Not supported by viewer]Infrastructure(AWS, Azure, On-Prem)[Not supported by viewer]EFK - ElasticSearch / Fluentd / Kabana(Log Search / Collection / Monitoring)[Not supported by viewer]Promfana - Prometheus / Grafana(Log Search / Collection / Monitoring)[Not supported by viewer]Zipkin(Future - Distributed Tracing)[Not supported by viewer]Rancher(Infrastructure Management)[Not supported by viewer]PostgreSQL(Deprecated - Data)[Not supported by viewer]MongoDB(CEP - Data)[Not supported by viewer]MySQL(Percona - Data)[Not supported by viewer]Kafka(Message - Streaming)[Not supported by viewer]Mojaloop API Adapter(API - Transfers)[Not supported by viewer]Mojaloop API Adapter(Handler - Notifications)[Not supported by viewer]Central-Services(API - Operational Admin)[Not supported by viewer]Central-Services(Handler - Prepare)[Not supported by viewer]Central-Services(Handler - Position)[Not supported by viewer]Central-Services(Handler - Fulfil)[Not supported by viewer]Central-Services(Handler - Get Transfers)[Not supported by viewer]Central-Services(Handler - Timeout)[Not supported by viewer]Simulator(API - QA FSP Simulator)[Not supported by viewer]Forensic-Logging-Sidecar(Auditing)[Not supported by viewer]Central-KMS(Key Management Store)[Not supported by viewer]ALS - Account-Lookup-Service(API - Parties, Participant)[Not supported by viewer]ALS-Oracle-Msisdn-Service(Pathfinder Lookup Adapter)[Not supported by viewer]Mock-Pathfinder(Mocked Pathfinder)[Not supported by viewer]Central-Event-Processor(CEP)[Not supported by viewer]Email-Notifier(Handler - Email)[Not supported by viewer]Central-Services(Handler - Admin)[Not supported by viewer]Moja-Hub(Future - Operational Web Interface)[Not supported by viewer]Interop-Switch(To be Retired - Transfers, Quotes, Parties, Participants)[Not supported by viewer]Circle-CI(Test, Build, Deploy)[Not supported by viewer]Docker Hub(Container Repository)[Not supported by viewer]NPM Org(NPM Repository)[Not supported by viewer]GitBooks(Documetation)[Not supported by viewer]
\ No newline at end of file
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.1.0 Get Participant Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS_API
+control "ALS Participant Handler" as ALS_PARTICIPANT_HANDLER
+entity "ALS Participant Config DAO" as ALS_PARTICIPANT_CONFIG_DAO
+entity "ALS Participant Oracle DAO" as ALS_PARTICIPANT_ORACLE_DAO
+database "ALS Database" as ALS_DB
+boundary "Oracle Service API" as ORACLE_API
+entity "Oracle Participant Handler" as ORACLE_PARTICIPANT_HANDLER
+entity "Oracle Participant DAO" as ORACLE_PARTICIPANT_DAO
+boundary "Oracle Registry Store" as ORACLE_STORE
+boundary "Central Service API" as CENTRALSERVICE_API
+
+box "Account Lookup Service" #LightYellow
+participant ALS_API
+participant ALS_PARTICIPANT_HANDLER
+participant ALS_PARTICIPANT_CONFIG_DAO
+participant ALS_PARTICIPANT_ORACLE_DAO
+participant ALS_DB
+end box
+
+box "Central Services" #LightGreen
+participant CENTRALSERVICE_API
+end box
+
+box "ALS Oracle Service/Adapter" #LightBlue
+participant ORACLE_API
+participant ORACLE_PARTICIPANT_HANDLER
+participant ORACLE_PARTICIPANT_DAO
+end box
+
+box "Internal/External Oracle Data Store/Service" #LightGrey
+participant ORACLE_STORE
+end box
+
+' START OF FLOW
+
+group Get Participant's FSP Details
+ PAYER_FSP -> ALS_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_API
+ ALS_API -> ALS_PARTICIPANT_HANDLER: Request to get participant's FSP details. \nError code: 3200
+ deactivate ALS_API
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Validate request against Mojaloop Interface Specification
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_CONFIG_DAO: Fetch Oracle Routing information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ALS_PARTICIPANT_CONFIG_DAO
+
+
+ ALS_PARTICIPANT_CONFIG_DAO -> ALS_DB: select * from oracleEndpoint where oracleType='{TYPE}' and isActive=true
+ activate ALS_DB
+ hnote over ALS_DB #lightyellow
+ oracleEndpoint
+ endpointType
+ end note
+ ALS_DB -> ALS_PARTICIPANT_CONFIG_DAO: return oracleEndpoint result set
+ deactivate ALS_DB
+
+ ALS_PARTICIPANT_CONFIG_DAO -> ALS_PARTICIPANT_HANDLER: List of End-points for the Participant
+ deactivate ALS_PARTICIPANT_CONFIG_DAO
+
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ alt {CURRENCY} not Provided OR no matching currency found in list of End-points
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_HANDLER: Select default End-point matching {Type} & {ID}
+ end alt
+
+ ALS_PARTICIPANT_HANDLER -> ALS_PARTICIPANT_ORACLE_DAO: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+ activate ALS_PARTICIPANT_ORACLE_DAO
+ ALS_PARTICIPANT_ORACLE_DAO -> ORACLE_API: Request to get participant's FSP details \nGET - /participants/{Type}/{ID}?currency={CURRENCY}. \nError code: 3200
+
+ activate ORACLE_API
+ ORACLE_API -> ORACLE_PARTICIPANT_HANDLER: Fetch Participant information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ORACLE_PARTICIPANT_HANDLER
+ ORACLE_PARTICIPANT_HANDLER -> ORACLE_PARTICIPANT_HANDLER: Validate request against ALS Oracle Interface Specification
+ ORACLE_PARTICIPANT_HANDLER -> ORACLE_PARTICIPANT_DAO: Fetch Participant information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ORACLE_PARTICIPANT_DAO
+ ORACLE_PARTICIPANT_DAO -> ORACLE_STORE: Fetch Participant information based on {Type}, {ID} and optionally {CURRENCY}. \nError code: 3200
+ activate ORACLE_STORE
+ ORACLE_STORE -> ORACLE_PARTICIPANT_DAO: Return list of Participant information
+ deactivate ORACLE_STORE
+ ORACLE_PARTICIPANT_DAO -> ORACLE_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
+ deactivate ORACLE_PARTICIPANT_DAO
+ ORACLE_PARTICIPANT_HANDLER -> ORACLE_API: Return list of Participant information. \nError code: 3200
+ deactivate ORACLE_PARTICIPANT_HANDLER
+
+ ORACLE_API -> ALS_PARTICIPANT_ORACLE_DAO: Return list of Participant information. \nError code: 3200
+ deactivate ORACLE_API
+
+ ALS_PARTICIPANT_ORACLE_DAO -> ALS_PARTICIPANT_HANDLER: Return list of Participant information. \nError code: 3200
+ deactivate ALS_PARTICIPANT_ORACLE_DAO
+
+ activate ALS_API
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return list of Participant information. \nError code: 3200
+ activate ALS_PARTICIPANT_HANDLER
+
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}?currency={CURRENCY}
+
+ else Empty list of End-Points returned or Error occured
+ ALS_PARTICIPANT_HANDLER -> ALS_API: Return \nError code: 3200
+ activate ALS_API
+ ALS_API --> PAYER_FSP: Callback: PUT - /participants/{Type}/{ID}/error
+ deactivate ALS_API
+ end alt
+
+ deactivate ALS_PARTICIPANT_HANDLER
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.0 Get Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "Payer FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+entity "Pathfinder Service" as PATHFINDER_SERVICE
+actor "GSMA Pathfinder" as PATHFINDER
+actor "Payee FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+box "Pathfinder Library" #LightBlue
+participant PATHFINDER_SERVICE
+end box
+
+participant PATHFINDER
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Get Party's Details
+ PAYER_FSP -> ALS: Request to get party's details \nGET - /parties/{Type}/{ID}
+ activate ALS
+ ALS -> PARTIES_HANDLER: Get Party by ID and Type \n(PartiesByTypeAndID)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Source Party's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Source Party Error Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Party Error Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Party Error Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> PATHFINDER_SERVICE: Query Party ID
+ activate PATHFINDER_SERVICE
+ PATHFINDER_SERVICE -> PATHFINDER: Query Party
+ activate PATHFINDER
+ PATHFINDER -> PATHFINDER_SERVICE: Return Mobile Country Code \nand Network Code
+ deactivate PATHFINDER
+ PATHFINDER_SERVICE -> PARTIES_HANDLER: Return MCC & MNC
+ deactivate PATHFINDER_SERVICE
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Participant Name\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Participant Name \n(getParticipantNameFromMccMnc)
+ activate DB
+ hnote over DB #lightyellow
+ participantMno
+ end note
+ DB --> PARTICIPANT_DAO: Return Participant Name
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Participant Name
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant with Updated Headers
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 202
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
+/'*****
+ License
+ --------------
+ Copyright © 2017 Bill & Melinda Gates Foundation
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+ Contributors
+ --------------
+ This is the official list of the Mojaloop project contributors for this file.
+ Names of the original copyright holders (individuals or organizations)
+ should be listed with a '*' in the first column. People who have
+ contributed from an organization can be listed under the organization
+ that actually holds the copyright for their contributions (see the
+ Gates Foundation organization for an example). Those individuals should have
+ their names indented and be marked with a '-'. Email address can be added
+ optionally within square brackets .
+ * Gates Foundation
+ - Name Surname
+
+ * Rajiv Mothilal
+ --------------
+ ******'/
+
+
+@startuml
+' declate title
+title 7.2.1 Put Parties Details
+
+autonumber
+' Actor Keys:
+' boundary - APIs/Interfaces, etc
+' entity - Database Access Objects
+' database - Database Persistance Store
+
+' declare actors
+actor "PAYER_FSP" as PAYER_FSP
+boundary "Account Lookup Service" as ALS
+control "Parties Handler" as PARTIES_HANDLER
+entity "Account Lookup Service API" as ALS
+entity "Participant DAO" as PARTICIPANT_DAO
+database "Central Ledger Database" as DB
+actor "Payee_FSP" as PAYEE_FSP
+
+box "Account Lookup Service" #LightYellow
+participant ALS
+participant PARTIES_HANDLER
+participant PARTICIPANT_DAO
+participant DB
+end box
+
+participant PAYEE_FSP
+
+' start flow
+
+activate PAYER_FSP
+group Put Party's Details
+ PAYER_FSP -> ALS: Callback for the Get Party's request \nPUT - /parties/{Type}/{ID}
+ note right of PAYER_FSP #yellow
+ Message:
+ party: {
+ partyIdInfo: {
+ “partyIdType”: “PERSONAL_ID”,
+ “partyIdentifier”: “1551212”,
+ “partySubIdOrType”: “License”,
+ “fspId”: “1234”
+ },
+ merchantClassificationCode: 4321,
+ “name”: “Justin Trudeau”,
+ “personalInfo”: {
+ “complexName”: {
+ “firstName”: “Justin”,
+ “middleName”: “Pierre”,
+ “lastName”: “Trudeau”
+ },
+ “dateOfBirth”: “1971-12-25”
+ }
+ }
+ end note
+ activate ALS
+ ALS -> PARTIES_HANDLER: Put Party by ID and Type \n(PartiesByTypeAndID2)
+ activate PARTIES_HANDLER
+ PARTIES_HANDLER ->PARTIES_HANDLER: Validate MSISDN
+ PARTIES_HANDLER ->PARTICIPANT_DAO: Fetch Target Participant's details \n(handleMSISDNPartyRequest)\nError code: 3200
+ activate PARTICIPANT_DAO
+ PARTICIPANT_DAO -> DB: Fetch Target Participant Endpoint \n(getParticipantEndpointByName)
+ activate DB
+ hnote over DB #lightyellow
+ participantEndpoint
+ end note
+ DB --> PARTICIPANT_DAO: Return Target Participant Endpoint
+ deactivate DB
+ PARTICIPANT_DAO --> PARTIES_HANDLER: Return Target Participant Endpoint
+ deactivate PARTICIPANT_DAO
+ PARTIES_HANDLER -> ALS: Return Success
+ PARTIES_HANDLER -> PAYEE_FSP: Forward Request to Target Participant
+ deactivate PARTIES_HANDLER
+ ALS -->PAYER_FSP: Return Success 200
+ deactivate ALS
+ deactivate PAYER_FSP
+end
+@enduml
+swagger: '2.0'
+info:
+ version: '1.0'
+ title: Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
+ description: Based on Mojaloop [API Definition](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) updated on 2018-03-13 Version 1.0. More information can be found are [mojaloop.io](http://mojaloop.io/)
+ contact: {}
+basePath: /
+schemes: []
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /participants/{Type}/{ID}:
+ get:
+ description: The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Look up participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDGet
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 200:
+ description: OK
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDGetResponse'
+ headers:
+ Content-Length:
+ type: string
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ put:
+ description: The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
+ summary: Return participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPut
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: accept
+ in: header
+ required: false
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 200:
+ description: OK
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ post:
+ description: The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
+ summary: Create participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsTypeIDPutRequest'
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ delete:
+ description: The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
+ summary: Delete participant information
+ tags:
+ - participants
+ operationId: ParticipantsByTypeAndIDDelete
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: Type
+ in: path
+ required: true
+ type: string
+ description: The type of lookup being requested, this can be MSISDN, bankAccount etc.
+ - name: ID
+ in: path
+ required: true
+ type: string
+ description: The ID related to the Type, if MSISDN then this is the mobile number being requested
+ - name: Currency
+ in: query
+ required: false
+ type: string
+ description: The Currency code applicable to the ID being requested
+ - name: SubId
+ in: query
+ required: false
+ type: string
+ description: The SubId related to the ID, or the Type
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 204:
+ description: No Content
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ /participants:
+ post:
+ description: The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
+ summary: Batch create participant information #fail these as a batch or accept it as a batch
+ tags:
+ - participants
+ operationId: ParticipantsPost
+ deprecated: false
+ produces:
+ - application/json
+ parameters:
+ - name: accept
+ in: header
+ required: true
+ type: string
+ description: The Accept header field indicates the version of the API the client would like the server to use.
+ - name: content-type
+ in: header
+ required: true
+ type: string
+ description: The Content-Type header indicates the specific version of the API used to send the payload body.
+ - name: date
+ in: header
+ required: true
+ type: string
+ description: The Date header field indicates the date when the request was sent.
+ - name: fspiop-source
+ in: header
+ required: true
+ type: string
+ description: The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
+ - name: body
+ in: body
+ required: true
+ description: ''
+ schema:
+ $ref: '#/definitions/ParticipantsPostRequest'
+ - name: content-length
+ in: header
+ required: false
+ type: integer
+ format: int32
+ exclusiveMaximum: false
+ exclusiveMinimum: false
+ description: The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
+ - name: x-forwarded-for
+ in: header
+ required: false
+ type: string
+ description: The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
+ - name: fspiop-destination
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
+ - name: fspiop-encryption
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
+ - name: fspiop-signature
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
+ - name: fspiop-uri
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
+ - name: fspiop-http-method
+ in: header
+ required: false
+ type: string
+ description: The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
+ responses:
+ 201:
+ description: Created
+ headers: {}
+ 400:
+ description: Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 401:
+ description: Unauthorized - The request requires authentication in order to be processed.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 403:
+ description: Forbidden - The request was denied and will be denied in the future.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 404:
+ description: Not Found - The resource specified in the URI was not found.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 405:
+ description: Method Not Allowed - An unsupported HTTP method for the request was used.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 406:
+ description: Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 501:
+ description: Not Implemented - The server does not support the requested service. The client should not retry.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+ 503:
+ description: Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
+ schema:
+ $ref: '#/definitions/ErrorInformationResponse'
+definitions:
+ CurrencyEnum:
+ title: CurrencyEnum
+ description: The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
+ example: AED
+ type: string
+ enum:
+ - AED
+ - AFN
+ - ALL
+ - AMD
+ - ANG
+ - AOA
+ - ARS
+ - AUD
+ - AWG
+ - AZN
+ - BAM
+ - BBD
+ - BDT
+ - BGN
+ - BHD
+ - BIF
+ - BMD
+ - BND
+ - BOB
+ - BRL
+ - BSD
+ - BTN
+ - BWP
+ - BYN
+ - BZD
+ - CAD
+ - CDF
+ - CHF
+ - CLP
+ - CNY
+ - COP
+ - CRC
+ - CUC
+ - CUP
+ - CVE
+ - CZK
+ - DJF
+ - DKK
+ - DOP
+ - DZD
+ - EGP
+ - ERN
+ - ETB
+ - EUR
+ - FJD
+ - FKP
+ - GBP
+ - GEL
+ - GGP
+ - GHS
+ - GIP
+ - GMD
+ - GNF
+ - GTQ
+ - GYD
+ - HKD
+ - HNL
+ - HRK
+ - HTG
+ - HUF
+ - IDR
+ - ILS
+ - IMP
+ - INR
+ - IQD
+ - IRR
+ - ISK
+ - JEP
+ - JMD
+ - JOD
+ - JPY
+ - KES
+ - KGS
+ - KHR
+ - KMF
+ - KPW
+ - KRW
+ - KWD
+ - KYD
+ - KZT
+ - LAK
+ - LBP
+ - LKR
+ - LRD
+ - LSL
+ - LYD
+ - MAD
+ - MDL
+ - MGA
+ - MKD
+ - MMK
+ - MNT
+ - MOP
+ - MRO
+ - MUR
+ - MVR
+ - MWK
+ - MXN
+ - MYR
+ - MZN
+ - NAD
+ - NGN
+ - NIO
+ - NOK
+ - NPR
+ - NZD
+ - OMR
+ - PAB
+ - PEN
+ - PGK
+ - PHP
+ - PKR
+ - PLN
+ - PYG
+ - QAR
+ - RON
+ - RSD
+ - RUB
+ - RWF
+ - SAR
+ - SBD
+ - SCR
+ - SDG
+ - SEK
+ - SGD
+ - SHP
+ - SLL
+ - SOS
+ - SPL
+ - SRD
+ - STD
+ - SVC
+ - SYP
+ - SZL
+ - THB
+ - TJS
+ - TMT
+ - TND
+ - TOP
+ - TRY
+ - TTD
+ - TVD
+ - TWD
+ - TZS
+ - UAH
+ - UGX
+ - USD
+ - UYU
+ - UZS
+ - VEF
+ - VND
+ - VUV
+ - WST
+ - XAF
+ - XCD
+ - XDR
+ - XOF
+ - XPF
+ - YER
+ - ZAR
+ - ZMW
+ - ZWD
+ PartyIdTypeEnum:
+ title: PartyIdTypeEnum
+ description: Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
+ example: MSISDN
+ type: string
+ enum:
+ - MSISDN
+ - EMAIL
+ - PERSONAL_ID
+ - BUSINESS
+ - DEVICE
+ - ACCOUNT_ID
+ - IBAN
+ - ALIAS
+ ErrorInformation:
+ title: ErrorInformation
+ description: Data model for the complex type ErrorInformation.
+ type: object
+ properties:
+ errorCode:
+ description: Specific error number.
+ type: string
+ errorDescription:
+ description: Error description string.
+ type: string
+ extensionList:
+ $ref: '#/definitions/ExtensionList'
+ required:
+ - errorCode
+ - errorDescription
+ ErrorInformationResponse:
+ title: ErrorInformationResponse
+ description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
+ type: object
+ properties:
+ errorInformation:
+ $ref: '#/definitions/ErrorInformation'
+ Extension:
+ title: Extension
+ description: Data model for the complex type Extension
+ type: object
+ properties:
+ key:
+ description: Extension key.
+ type: string
+ value:
+ description: Extension value.
+ type: string
+ required:
+ - key
+ - value
+ ExtensionList:
+ title: ExtensionList
+ description: Data model for the complex type ExtensionList
+ type: object
+ properties:
+ extension:
+ description: Number of Extension elements
+ type: array
+ items:
+ $ref: '#/definitions/Extension'
+ minItems: 1
+ maxItems: 16
+ required:
+ - extension
+ ParticipantsTypeIDGetResponse:
+ title: ParticipantsTypeIDGetResponse
+ description: OK
+ type: object
+ properties:
+ partyList:
+ description: List of PartyTypeIdInfo elements that were either created or failed to be created.
+ type: array
+ items:
+ $ref: '#/definitions/PartyTypeIdInfo'
+ minItems: 1
+ maxItems: 10000
+ ParticipantsTypeIDPutRequest:
+ title: ParticipantsTypeIDPutRequest
+ description: PUT /participants/{Type}/{ID} object
+ type: object
+ properties:
+ fspId:
+ description: FSP Identifier that the Party belongs to.
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+ ParticipantsPostRequest:
+ title: ParticipantsPostRequest
+ description: POST /participants object
+ type: object
+ properties:
+ requestId:
+ description: The ID of the request, decided by the client. Used for identification of the callback from the server.
+ type: string
+ partyList:
+ description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
+ type: array
+ items:
+ $ref: '#/definitions/PartyIdInfo'
+ minItems: 1
+ maxItems: 10000
+ required:
+ - requestId
+ - partyList
+ PartyIdInfo:
+ title: PartyIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ partyIdType:
+ description: Type of the identifier.
+ type: string
+ partyIdentifier:
+ description: An identifier for the Party.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ required:
+ - partyIdType
+ - partyIdentifier
+ PartyTypeIdInfo:
+ title: PartyTypeIdInfo
+ description: Data model for the complex type PartyIdInfo.
+ type: object
+ properties:
+ fspId:
+ description: FSP ID
+ type: string
+ currency:
+ description: Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
+ type: string
+ partySubIdOrType:
+ description: A sub-identifier or sub-type for the Party.
+ type: string
+ required:
+ - fspId
+ - currency
+tags:
+ - name: participants
+ description: ''
/central-settlement/.gitkeep b/central-settlement/.gitkeep
new file mode 100644
index 0000000..e69de29
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
-
-[Kubernetes Install with Docker 1](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-1.png)
+
* Go to **Kubernetes**
* Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
-
-[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
+
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
-
-[kubernetes-dashboard](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/kubernetesDashboard.png)
+
**Ubuntu** continue from here
# Standards
-## Standards
-
-### Standards for adopting an Open Source contribution into Mojaloop
+## Standards for adopting an Open Source contribution into Mojaloop
This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
-#### Prerequisites
+### Prerequisites
1. The contribution should be in-line with the LevelOne Principles
2. Basic guidelines regarding status of the contribution \(Code-base / Standards / Designs / Specifications\)
3. Basic documentation to get started
-#### Guidelines regarding adoption
+### Guidelines regarding adoption
1. Create a private repo on the Mojaloop GitHub organization
2. Have a sub-team of the DA take a look to make sure its portable \(to OSS\) - aligns with L1P principles, etc, and ensure design is in line with standards
This document provides guidelines regarding the adoption of a contribution to th
6. Configuration for 'modes of operation'
7. Enable CI/CD pipeline
-## Creating new Features
+# Creating new Features
-### Fork
+## Fork
Fork the Mojaloop repository into your own personal space. Ensure that you keep the `master` branch in sync.
Refer to the following documentation for more information: [https://help.github.
4. To sync to your current branch: `git pull mojaloop ` This will merge any changes from Mojaloop's repo into your forked repo.
5. Push the changes back to your remote fork: `git push origin `
-### Creating a Branch
+## Creating a Branch
Create a new branch from the `master` branch with the following format: `/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
Where `` can be one of the following:
| release | A release branch containing a snapshot of a release. |
| backup | A temporary backup branch. Used normally during repo maintenance. |
-### Merge into Mojaloop Repo
+## Merge into Mojaloop Repo
Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
-## Versioning of releases made for core Switch services
+# Versioning of releases made for core Switch services
This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
-#### [Versioning Strategy](standards.md#versioning-strategy)
+### [Versioning Strategy](standards.md#versioning-strategy)
-#### [Current versions](standards.md#current-version)
+### [Current versions](standards.md#current-version)
-#### [Notes](standards.md#notes)
+### [Notes](standards.md#notes)
-### Versioning Strategy
+## Versioning Strategy
1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
-### Notes
+## Notes
1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
-### Pull Request Process
+## Pull Request Process
It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
-### Code of conduct
+## Code of conduct
We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
-### Licensing
+## Licensing
See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
-##
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
The purpose of this document is to provide the following:
Helm chart Repo: http://mojaloop.io/helm/repo
Mojaloop addresses these issues in several key ways:
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
+
The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
The routing configuration will be based on the following:
The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
-* [ALS Oracle Service v1 Interface Contract](http://mojaloop.io/doc-assets/InterfaceContracts/OracleServiceSwaggerv1.yaml)
+* [ALS Oracle Service v1 Interface Contract](../assets//InterfaceContracts/OracleServiceSwaggerv1.yaml)
## 2. Participant Lookup Design
### 2.1 Architecture overview
-
+
### 2.2 Sequence diagram
Work in progress..
## 3. Party Lookup Design
### 3.1 Architecture overview
-
+
### 3.2 Sequence diagram
The central ledger is a series of services that facilitate clearing and settleme
* Maintaining net positions for a deferred net settlement
* Propagating scheme-level and off-transfer fees
-
-
+
The Central Settlements service is part of the Mojaloop project and deployment.
* The central settlements service exposes Settlement API to manage the settlements between FSPs and the Central Hub.
* The service manages Settlement Windows and Settlements Event Triggers and provides information about FSPs accounts and settlements.
-
+
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
-
+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
-# helm
+# Helm
The purpose of this document is to provide;
The purpose of this document is to provide;
Helm chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo) <- Helm repo to be added to config Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm) <- Location for source and values.yaml\(configs\)
-
-
-[Mojaloop Helm - Chart Overview](https://github.com/mojaloop/documentation/tree/840f40c8a94b4c7ded4569f07dea313d164b6980/Diagrams/helm/HelmChartOverview.png)
+
## Helm Hierarchy Relationship
-
-
-[Mojaloop Helm - Hierarchy Relationship](https://github.com/mojaloop/documentation/tree/840f40c8a94b4c7ded4569f07dea313d164b6980/Diagrams/helm/HelmHierarchyRelationship.svg)
+
## Helm Hierarchy of Values
-
-
-[Mojaloop Helm - Hierarchy of Values](https://github.com/mojaloop/documentation/tree/840f40c8a94b4c7ded4569f07dea313d164b6980/Diagrams/helm/HelmHierarchyValues.png)
-
+
+# Gitbook information
+
+## To install gitbook cli
+
+`npm install -g gitbook-cli`
+
+## To install gitbook runtime
+
+`gitbook install`
+
+## To serve gitbook documentation
+
+`gitbook serve --port 8989`
# Node
node_modules
+
+# Gitbook
+_book
+.gitbook
\ No newline at end of file
* [helm](repositories/helm.md)
* [project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
+* [Changelog](changelog.md)
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
+
\ No newline at end of file
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
* [Fraud Services](mojaloop-technical-overview/fraud-services.md)
+* [APIs](api/README.md)
+ * [Mojaloop](api/mojaloop-api-specification.md)
+ * [ALS Oracle Service](api/als-oracle-api-specification.md)
* [Repo Details](repositories/README.md)
* [helm](repositories/helm.md)
* [project](repositories/project.md)
/api/README.md b/api/README.md
new file mode 100644
index 0000000..e69de29
/api/mojaloop-api-specification.md b/api/mojaloop-api-specification.md
new file mode 100644
index 0000000..e69de29
**/*.iml
# VSCode directory
-.vscode
\ No newline at end of file
+.vscode
+
+# Node
+node_modules
+
Interface for interaction between Mojaloop's Account Lookup Service(ALS) and an Oracle Registry Service
Base URL: /, Version: 1.1
Based on Mojaloop API Definition updated on 2018-03-13 Version 1.0. More information can be found are mojaloop.io
Default request content-types:
application/json
Default response content-types:
application/json
Schemes:
Summary
Path
Operation
Description
/participants
POST
Batch create participant information
/participants/{Type}/{ID}
DELETE
Delete participant information
GET
Look up participant information
POST
Create participant information
PUT
Return participant information
Paths
Batch create participant information
POST /participants
Tags:
participants
The HTTP request POST /participants is used to create information in the server regarding the provided list of identities. This request should be used for bulk creation of FSP information for more than one Party. The optional currency parameter should indicate that each provided Party supports the currency
Uses default content-types:
application/json
ParticipantsPostRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
201 Created
Created
ParticipantsIDPutResponse
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Delete participant information
DELETE /participants/{Type}/{ID}
Tags:
participants
The HTTP request DELETE /participants/{Type}/{ID} is used to delete information in the server regarding the provided identity, defined by {Type} and {ID}) (for example, DELETE /participants/MSISDN/123456789). This HTTP request should support a query string to delete FSP information regarding a specific currency only (This similarly applies to the SubId). To delete a specific currency only, the HTTP request DELETE /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Look up participant information
GET /participants/{Type}/{ID}
Tags:
participants
The HTTP request GET /participants/{Type}/{ID} is used to find out in which FSP the requested Party, defined by {Type} and {ID} is located (for example, GET /participants/MSISDN/123456789). This HTTP request should support a query string to filter FSP information regarding a specific currency only (This similarly applies to the SubId). To query a specific currency only, the HTTP request GET /participants/{Type}/{ID}?currency=XYZ should be used, where XYZ is the requested currency. Note - Both the currency and the SubId can be used mutually inclusive or exclusive
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
Currency
The Currency code applicable to the ID being requested
query
string
SubId
The SubId related to the ID, or the Type
query
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
application/json
200 OK
OK
ParticipantsTypeIDGetResponse
Name
Description
Data Type
Content-Length
string
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Create participant information
POST /participants/{Type}/{ID}
Tags:
participants
The HTTP request POST /participants/{Type}/{ID} is used to create information in the server regarding the provided identity, defined by {Type} and {ID} (for example, POST /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
201 Created
Created
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Return participant information
PUT /participants/{Type}/{ID}
Tags:
participants
The PUT /participants/{Type}/{ID} is used to update information in the server regarding the provided identity, defined by {Type} and {ID} (for example, PUT /participants/MSISDN/123456789).
Uses default content-types:
application/json
ParticipantsTypeIDPutRequest
Name
Description
Type
Data Type
Annotation
Type
The type of lookup being requested, this can be MSISDN, bankAccount etc.
path
string
ID
The ID related to the Type, if MSISDN then this is the mobile number being requested
path
string
content-type
The Content-Type header indicates the specific version of the API used to send the payload body.
header
string
date
The Date header field indicates the date when the request was sent.
header
string
fspiop-source
The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature).
header
string
accept
The Accept header field indicates the version of the API the client would like the server to use.
header
string
x-forwarded-for
The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For.
header
string
fspiop-destination
The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes.
header
string
fspiop-encryption
The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request.
header
string
fspiop-signature
The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
header
string
fspiop-uri
The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document.
header
string
fspiop-http-method
The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document.
header
string
content-length
The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body. Note - The API supports a maximum size of 5242880 bytes (5 Megabytes)
header
integer (int32)
application/json
204 No Content
No Content
Name
Description
Data Type
400 Bad Request
Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.
ErrorInformationResponse
401 Unauthorized
Unauthorized - The request requires authentication in order to be processed.
ErrorInformationResponse
403 Forbidden
Forbidden - The request was denied and will be denied in the future.
ErrorInformationResponse
404 Not Found
Not Found - The resource specified in the URI was not found.
ErrorInformationResponse
405 Method Not Allowed
Method Not Allowed - An unsupported HTTP method for the request was used.
ErrorInformationResponse
406 Not Acceptable
Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.
ErrorInformationResponse
501 Not Implemented
Not Implemented - The server does not support the requested service. The client should not retry.
ErrorInformationResponse
503 Service Unavailable
Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.
ErrorInformationResponse
Schema definitions
CurrencyEnum:
string , x ∈ {
AED
,
AFN
,
ALL
,
AMD
,
ANG
,
AOA
,
ARS
,
AUD
,
AWG
,
AZN
,
BAM
,
BBD
,
BDT
,
BGN
,
BHD
,
BIF
,
BMD
,
BND
,
BOB
,
BRL
,
BSD
,
BTN
,
BWP
,
BYN
,
BZD
,
CAD
,
CDF
,
CHF
,
CLP
,
CNY
,
COP
,
CRC
,
CUC
,
CUP
,
CVE
,
CZK
,
DJF
,
DKK
,
DOP
,
DZD
,
EGP
,
ERN
,
ETB
,
EUR
,
FJD
,
FKP
,
GBP
,
GEL
,
GGP
,
GHS
,
GIP
,
GMD
,
GNF
,
GTQ
,
GYD
,
HKD
,
HNL
,
HRK
,
HTG
,
HUF
,
IDR
,
ILS
,
IMP
,
INR
,
IQD
,
IRR
,
ISK
,
JEP
,
JMD
,
JOD
,
JPY
,
KES
,
KGS
,
KHR
,
KMF
,
KPW
,
KRW
,
KWD
,
KYD
,
KZT
,
LAK
,
LBP
,
LKR
,
LRD
,
LSL
,
LYD
,
MAD
,
MDL
,
MGA
,
MKD
,
MMK
,
MNT
,
MOP
,
MRO
,
MUR
,
MVR
,
MWK
,
MXN
,
MYR
,
MZN
,
NAD
,
NGN
,
NIO
,
NOK
,
NPR
,
NZD
,
OMR
,
PAB
,
PEN
,
PGK
,
PHP
,
PKR
,
PLN
,
PYG
,
QAR
,
RON
,
RSD
,
RUB
,
RWF
,
SAR
,
SBD
,
SCR
,
SDG
,
SEK
,
SGD
,
SHP
,
SLL
,
SOS
,
SPL
,
SRD
,
STD
,
SVC
,
SYP
,
SZL
,
THB
,
TJS
,
TMT
,
TND
,
TOP
,
TRY
,
TTD
,
TVD
,
TWD
,
TZS
,
UAH
,
UGX
,
USD
,
UYU
,
UZS
,
VEF
,
VND
,
VUV
,
WST
,
XAF
,
XCD
,
XDR
,
XOF
,
XPF
,
YER
,
ZAR
,
ZMW
,
ZWD
}
The currency codes defined in ISO 4217 as three-letter alphabetic codes are used as the standard naming representation for currencies.
"AED"
ErrorInformation:
object
Data model for the complex type ErrorInformation.
errorCode:
string
Specific error number.
errorDescription:
string
Error description string.
extensionList:
ExtensionList
ErrorInformationResponse:
object
Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
errorInformation:
ErrorInformation
Extension:
object
Data model for the complex type Extension
key:
string
Extension key.
value:
string
Extension value.
ExtensionList:
object
Data model for the complex type ExtensionList
extension:
object[]
Number of Extension elements
Extension
ParticipantsIDPutResponse:
object
PUT /participants/{ID} object
partyList:
object[]
List of PartyResult elements that were either created or failed to be created.
PartyResult
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
ParticipantsPostRequest:
object
POST /participants object
requestId:
string
The ID of the request, decided by the client. Used for identification of the callback from the server.
partyList:
object[]
List of PartyIdInfo elements that the client would like to update or create FSP information about.
PartyIdInfo
ParticipantsTypeIDGetResponse:
object
OK
partyList:
object[]
List of PartyTypeIdInfo elements that were either created or failed to be created.
PartyTypeIdInfo
ParticipantsTypeIDPutRequest:
object
PUT /participants/{Type}/{ID} object
fspId:
string
FSP Identifier that the Party belongs to.
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
PartyIdInfo:
object
Data model for the complex type PartyIdInfo.
partyIdType:
string
Type of the identifier.
partyIdentifier:
string
An identifier for the Party.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
PartyIdTypeEnum:
string , x ∈ {
MSISDN
,
EMAIL
,
PERSONAL_ID
,
BUSINESS
,
DEVICE
,
ACCOUNT_ID
,
IBAN
,
ALIAS
}
Below are the allowed values for the enumeration - MSISDN An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix. - EMAIL An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696. - PERSONAL_ID A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element. - BUSINESS A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used. - DEVICE A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP. - IBAN A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace. - ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.
"MSISDN"
PartyResult:
object
Data model for the complex type PartyResult.
partyId:
PartyIdInfo
errorInformation:
ErrorInformation
PartyTypeIdInfo:
object
Data model for the complex type PartyIdInfo.
fspId:
string
FSP ID
currency:
string
Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo.
partySubIdOrType:
string
A sub-identifier or sub-type for the Party.
Helm chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo) &l
## Helm Hierarchy Relationship
-!\[Mojaloop Helm - Hierarchy Relationship\]../Diagrams/helm/HelmHierarchyRelationship.png\)
+
[Mojaloop Helm - Hierarchy Relationship](https://github.com/mojaloop/documentation/tree/840f40c8a94b4c7ded4569f07dea313d164b6980/Diagrams/helm/HelmHierarchyRelationship.svg)
The Central Settlements service is part of the Mojaloop project and deployment.
* The central settlements service exposes Settlement API to manage the settlements between FSPs and the Central Hub.
* The service manages Settlement Windows and Settlements Event Triggers and provides information about FSPs accounts and settlements.
-
-
+
----
-description: Mojaloop Contributors Guide
----
-
# Contributors Guide
## How do I contribute?
Fixed [good first issue](https://github.com/mojaloop/project/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) typo
description: Mojaloop Contributors Guide
### \* Get familiar with our [Standards](standards.md) on contributing to this project
-### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue")
+### \* View the project board and work on your [good first issue](https://github.com/mojaloop/project/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)
### \* Review the [Roadmap](../mojaloop-roadmap.md) and contribute to future opportunities
## What work is needed?
-Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with [good first issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue"). In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
+Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with "[good first issue](https://github.com/mojaloop/project/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)". In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
There's a [roadmap](../mojaloop-roadmap.md) that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
This component (or back-end systems) will also be responsible for the persistenc

### 2.2 Sequence diagram
-tbd
+
+Work in progress..
## 3. Party Lookup Design
tbd

### 3.2 Sequence diagram
-tbd
+
+Work in progress..
## 4. Database Design
### 4.1 ALS Database Schema
-tbd
+
+Work in progress..
+
+### 4.2 Oracle Database Schema
+
+This is optional & is dependant on the Oracle's requirements & design.
The [project repository](https://github.com/mojaloop/project) is the central rep
* To file a new bug or feature request, follow the templates below.
* We also use "Zenhub" a GitHub plug-in to visualize the stories and associated swim lanes.
-## Bug Template
-
-**Summary**:
-
-**Severity**: \(Low, Medium, High\)
-
-**Priority**: \(Critical, Medium, Low\)
-
-**Expected Behavior**
-
-**Steps to Reproduce** 1. 2. 3.
-
-**Specifications**
-
-* Component \(if known\):
-* Version:
-* Platform:
-* Subsystem:
-* Type of testing:
-* Bug found/raised by:
-
-**Notes**:
-
-* Severity when opened:
-* Priority when opened:
-
-## Feature Template
-
-### **Goal**:
-
-As a I want to so that
-
-**Tasks**:
-
-* [ ] TBD \[ @? \]
-
-**Acceptance Criteria**:
-
-* [ ] Designs are up-to date
-* [ ] Unit Tests pass
-* [ ] Integration Tests pass
-* [ ] Code Style & Coverage meets standards
-* [ ] Changes made to config \(default.json\) are broadcast to team and follow-up tasks added to update helm charts and other deployment config.
-* [ ] TBD
-
-### **Pull Requests**:
-
-* [ ] TBD
-
-### **Follow-up**:
-
-* N/A
-
-**Dependencies**:
-
-* N/A
-
-### **Accountability**:
-
-* Owner: TBC
-* QA/Review: TBC
-
-
+## Templates
+* [Feature Request Template](https://github.com/mojaloop/project/blob/master/.github/ISSUE_TEMPLATE/feature_request.md)
+* [Bug Report Template](https://github.com/mojaloop/project/blob/master/.github/ISSUE_TEMPLATE/bug_report.md)
# Fraud Services
-Overview of Fraud Services planned implementation.
+Work in progress...
There are several components that make up the Mojaloop ecosystem. The Mojaloop Hub is the primary container and reference we use to describe the core Mojaloop components.
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
+

_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
* [Core Scenarios](mojaloop-background/core-scenarios.md)
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
- * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
* [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
- * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
* [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
* [Repo Details](repositories/README.md)
* [helm](repositories/helm.md)
* [project](repositories/project.md)
description: Mojaloop Contributors Guide
### \* Get familiar with our [Standards](standards.md) on contributing to this project
-### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A\"good+first+issue\")
+### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue")
### \* Review the [Roadmap](../mojaloop-roadmap.md) and contribute to future opportunities
description: Mojaloop Contributors Guide
### \* Get familiar with our [Standards](standards.md) on contributing to this project
-### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue")
+### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A\"good+first+issue\")
### \* Review the [Roadmap](../mojaloop-roadmap.md) and contribute to future opportunities
description: Mojaloop Contributors Guide
## What work is needed?
-Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with "[good first issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue")". In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
+Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with [good first issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue"). In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
There's a [roadmap](../mojaloop-roadmap.md) that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
Our model addresses these issues in several key ways:
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
The intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
-
## Mojaloop Services
-The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. The following diagrams shows the Mojaloop interconnects between DFSPs and the Mojaloop Hub (schema implementation example) for a Peer-to-Peer (P2P) Transfer:
+The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers (DFSPs) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. The following diagrams shows the Mojaloop interconnects between DFSPs and the Mojaloop Hub (schema implementation example) for a Peer-to-Peer (P2P) Transfer:
-
-
-Our model addresses these issues in several key ways:
+Mojaloop addresses these issues in several key ways:
* A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
+
+
+The Mojaloop Hub is the primary container and reference we use to describe the Mojaloop echo-system which is split in to the following domains:
+* Mojaloop Open Source Services - Core Mojaloop Open Source Software (OSS) that has been supported by the Bill & Melinda Gates Foundation in partnership with the Open Source Community.
+* Mojaloop Hub - Overall Mojaloop reference (and customizable) implementation for Hub Operators is based on the above OSS solution.
There are several components that make up the Mojaloop ecosystem. The Mojaloop H
The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:

+
_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
These consist of:
Reworked the main mojaloop technical overview and moved components into the respective section.
## Mojaloop Services
-The following architecture component diagram shows the Mojaloop services:
-
-_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
-
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. The following diagrams shows the Mojaloop interconnects between DFSPs and the Mojaloop Hub (schema implementation example) for a Peer-to-Peer (P2P) Transfer:

# Mojaloop Hub
-There are several components that make up the Mojaloop ecosystem. The Mojaloop Hub is the primary container and reference we use to describe the core Mojaloop components.
+There are several components that make up the Mojaloop ecosystem. The Mojaloop Hub is the primary container and reference we use to describe the core Mojaloop components.
-
+The following component diagram shows the break-down of the Mojaloop services and its micro-service architecture:
+
+_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
These consist of:
-* The Central Services provide the set of interfaces required to move money from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. The Central Services contains the core Central Ledger logic to move money but also will be extended to provide fraud management and enforce scheme rules.
-* The Directory Gateway provides a look-up account service and routes each payment to the correct service/provider in the ecosystem. This system leverages Pathfinder and a Merchant Registry to find this information.
-* The Mojaloop API's provide the standard set of interfaces a DFSP can implement to connect to the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
+* The Mojaloop API Adapters provide the standard set of interfaces a DFSP can implement to connect to the system for Transfers. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
+* The Central Services provide the set of components required to move money from one DFSP to another through the Mojaloop API Adapters. This is similar to how money moves through a central bank or clearing house in developed countries. The Central Services contains the core Central Ledger logic to move money but also will be extended to provide fraud management and enforce scheme rules.
+* The Account Lookup Service (ALS) provides mechanism to resolve FSP routing information through the Particpant API or orchestrate a Party request based on an internal Participant look-up. The internal Participant look-up is handled by a number of standard Oracle adapter or services. Example Oracle adapter/service would be to look-up Participant information from Pathfinder or a Merchant Registry. These Oracle adapter or services can easily be added depending on the schema requirements.
On either side of the Mojaloop Hub there is sample open source code to show how a DFSP can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
# Central-Ledger Services
-The Account Lookup Service as per the [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) implements the following use-cases:
+The Account Lookup Service _(refer to section `6.2.1.2`)_ as per the [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) implements the following use-cases:
-* Participant Look-up
+* Participant Look-up
* Party Look-up
* Manage Participants Registry information
* Adding Participant Registry information
tbd
tbd
-## 4. Database Schema
+## 4. Database Design
+### 4.1 ALS Database Schema
+tbd
The routing configuration will be based on the following:
The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
+* [ALS Oracle Service v1 Interface Contract](http://mojaloop.io/doc-assets/InterfaceContracts/OracleServiceSwaggerv1.yaml)
+
## 2. Participant Lookup Design
### 2.1 Architecture overview
The ALS design provides a generic Central-Service component as part of the core
The routing configuration will be based on the following:
* PartyIdType - See section `7.5.6` of the Mojaloop Specification
* PartyIdentifier - See section `7.3.24` of the Mojaloop Specification
-* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "defualt" End-point config exists.
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "default" End-point config exists.
### 1.2 ALS Oracle Service/Adapter
The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
The ALS design provides a generic Central-Service component as part of the core
The routing configuration will be based on the following:
* PartyIdType - See section `7.5.6` of the Mojaloop Specification
* PartyIdentifier - See section `7.3.24` of the Mojaloop Specification
-* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in ISO 421736 as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "defualt" End-point config exists.
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "defualt" End-point config exists.
### 1.2 ALS Oracle Service/Adapter
The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
The Account Lookup Service as per the [Mojaloop v1.0 Specification](https://gith
* Participant Look-up
* Party Look-up
-* Manage Participants
- * Adding Participant information
- * Deleting Participant information
+* Manage Participants Registry information
+ * Adding Participant Registry information
+ * Deleting Participant Registry information
+* Admin Operations
+ * Manage Oracle End-point Routing information
## 1. Design Considerations
The Account Lookup Service as per the [Mojaloop v1.0 Specification](https://gith
The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
The routing configuration will be based on the following:
-* PartyIdType - See section 7.5.6 of the Mojaloop Specification
-* PartyIdentifier - See section 7.3.24 of the Mojaloop Specification
-* Currency - See section 7.5.5 of the Mojaloop Specification. Currency code defined in ISO 421736 as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "defualt" End-point config exists.
+* PartyIdType - See section `7.5.6` of the Mojaloop Specification
+* PartyIdentifier - See section `7.3.24` of the Mojaloop Specification
+* Currency - See section `7.5.5` of the Mojaloop Specification. Currency code defined in ISO 421736 as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "defualt" End-point config exists.
### 1.2 ALS Oracle Service/Adapter
The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
The routing configuration will be based on the following:
The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
-## Participant Lookup Design
+## 2. Participant Lookup Design
-### Architecture overview
+### 2.1 Architecture overview

-### Sequence diagram
+### 2.2 Sequence diagram
tbd
-## Party Lookup Design
+## 3. Party Lookup Design
-### Architecture overview
+### 3.1 Architecture overview

-### Sequence diagram
+### 3.2 Sequence diagram
tbd
-## Database Schema
+## 4. Database Schema
# Central-Ledger Services
-The Account Lookup Service as per the Mojaloop specification has the following use-cases:
+The Account Lookup Service as per the [Mojaloop v1.0 Specification](https://github.com/mojaloop/mojaloop-specification/blob/master/API%20Definition%20v1.0.pdf) implements the following use-cases:
* Participant Look-up
-* Create Participant
* Party Look-up
+* Manage Participants
+ * Adding Participant information
+ * Deleting Participant information
+
+## 1. Design Considerations
-## Participant
+### 1.1 Account Lookup Service (ALS)
+The ALS design provides a generic Central-Service component as part of the core Mojaloop. The purpose of this component is to provide routing and alignment to the Mojaloop API Specification. This component will support multiple Look-up registries (Oracles). This ALS will provide an Admin API to configure routing/config for each of the Oracles similiar to the Central-Service API for the End-point configuration for DFSP routing by the Notification-Handler (ML-API-Adapter Component). The ALS will in all intense purpose be a switch with a persistence store for the storage/management of the routing rules/config.
-
+The routing configuration will be based on the following:
+* PartyIdType - See section 7.5.6 of the Mojaloop Specification
+* PartyIdentifier - See section 7.3.24 of the Mojaloop Specification
+* Currency - See section 7.5.5 of the Mojaloop Specification. Currency code defined in ISO 421736 as three-letter alphabetic string. This will be optional, and must provide a "default" config if no Currency is either provided or provide a default if the Currency is provided, but only the "defualt" End-point config exists.
+### 1.2 ALS Oracle Service/Adapter
+The ALS Oracle Service or Adapter (semantic dependant on use - Mediation = Adapter, Service = Implementation) will provide a look-up registry component with similar functionality of the `/participants` Mojaloop API resources. It has however loosely based on the ML API specification as it's interface implements a sync pattern which reduces the correlation/persistence requirements of the Async Callback pattern implemented directly by the ML API Spec. This will provide all ALS Oracle Services/Adapters with a standard interface which will be mediated by the ALS based on its routing configuration.
+This component (or back-end systems) will also be responsible for the persistence & defaulting of the Participant details.
-## Party
+## Participant Lookup Design
-
+### Architecture overview
+
+
+### Sequence diagram
+tbd
+
+## Party Lookup Design
+
+### Architecture overview
+
+
+### Sequence diagram
+tbd
+
+
+## Database Schema
## Mojaloop Services
-The following architecture diagram shows the Mojaloop services:
+The following architecture component diagram shows the Mojaloop services:
+
+_Note: Colour-grading indicates the relationship between data-store, and message-streaming / adapter-interconnects. E.g. `Central-Services` utilise `MySQL` as a Data-store, and leverage on `Kafka` for Messaging_
-
+The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. The following diagrams shows the Mojaloop interconnects between DFSPs and the Mojaloop Hub (schema implementation example) for a Peer-to-Peer (P2P) Transfer:
-The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
+
+Our model addresses these issues in several key ways:
* A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
The purpose of this document is to provide the following:
Helm chart Repo: http://mojaloop.io/helm/repo
+# --------------- #
+# IntelliJ #
+# --------------- #
+.idea/
+**/*.iml
+
+# VSCode directory
+.vscode
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 8. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve both the POST and PUT end-points)A1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A7. User Lookup GET /parties/<idType>/<id>A7. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A9. User Lookup PUT /parties/<idType>/<id>A9. User Lookup <br>PUT /parties/<idType>/<id>A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve the PUT end-point)A1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
* [Contributors Guide](contributors-guide/README.md)
* [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
* [Current Version](contributors-guide/mojaloop-deployment/current-versions.md)
- * [Standards](contributors-guide/standards/README.md)
- * [Versioning](contributors-guide/standards/versioning.md)
- * [Creating new Features](contributors-guide/standards/creating-new-features.md)
+ * [Standards](contributors-guide/standards.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
- * [Code Quality Metrics](contributors-guide/tools-and-technologies/code-quality-metrics.md)
* [Automated Testing](contributors-guide/tools-and-technologies/automated-testing.md)
- * [Documentation](contributors-guide/documentation/README.md)
- * [API Documentation](contributors-guide/documentation/api-documentation.md)
- * [Documentation Style Guide](contributors-guide/documentation/documentation-style-guide.md)
+ * [Documentation](contributors-guide/documentation.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
* [Core Scenarios](mojaloop-background/core-scenarios.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
* [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
+ * [Account-Lookup Service](mojaloop-technical-overview/account-lookup-service.md)
* [Repo Details](repositories/README.md)
* [helm](repositories/helm.md)
* [project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
-
description: Mojaloop Contributors Guide
### \* Review the [Mojaloop Deployment](mojaloop-deployment/#mojaloop-deployment) Guide
-### \* Get familiar with our [Standards](standards/) on contributing to this project
+### \* Get familiar with our [Standards](standards.md) on contributing to this project
### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue")
+# Documentation
+
+### Style guides and templates UPDATE
+
+* [Documentation standards](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-and-Template-Standards.md)
+* [Documentation style guide](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-Style-Guide.md)
+* [Code Style](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Style.md)
+* [Code Quality Metrics](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Quality-Metrics.md)
+
+###
+
# Current Version
-A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
+Current versions A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
-At of March 6th 2019, the active releases for core central services are as below
+At of March 2019, the active releases for core central services are as below
-* helm: **v5.2.0**
-* central-ledger: v5.3.0
-* ml-api-adapter: v5.2.1
+* helm: v5.2.0
+* central-ledger: v5.2.0
+* ml-api-adapter: v5.2.0
* central-settlement: v5.2.0
-* central-event-processor: v5.3.0
-* email-notifier: v5.3.0
+* central-event-processor: v5.2.0
+* email-notifier: v5.2.0
+
Here we document the reasoning behind certain tools, technology and process choi
* **Agile development** - This methodology is used to track and run the project. The requirements need to be refined as the project is developed, therefore we picked agile development over waterfall or lean.
* **APIs** - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our [Pragmatic REST](pragmatic-rest.md) design pattern. APIs will be defined using OpenAPI or RAML. Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
-* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](automated-testing.md) and [code quality metrics](code-quality-metrics.md) for standards.
+* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](automated-testing.md).
* **Hosting** - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.
* **Interledger** – Mojaloop needed a lightweight, open, and secure transport protocol for funds. [Interledger.org](http://Interledger.org) provides all that. It also provides the ability to connect to other systems. We also considered block chain systems, but block chain systems send very large messages which will be harder to guarantee delivery of in third world infrastructure. Also, while blockchain systems provide good anonymity, that is not a project goal. To enable fraud detection, regulatory authorities need to be able to request records of transfers by account and person.
* **Open source** - The entire project has been released as open source in accordance with the [Level One Project principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf). All tools and processes must be open source friendly and support projects that use an Apache 2.0 license with no restrictive licenses requirements on developers.
+# Central-Ledger Services
+
+The Account Lookup Service as per the Mojaloop specification has the following use-cases:
+
+* Participant Look-up
+* Create Participant
+* Party Look-up
+
+## Participant
+
+
+
+
+## Party
+
+
+
* [Code Quality Metrics](contributors-guide/tools-and-technologies/code-quality-metrics.md)
* [Automated Testing](contributors-guide/tools-and-technologies/automated-testing.md)
* [Documentation](contributors-guide/documentation/README.md)
+ * [API Documentation](contributors-guide/documentation/api-documentation.md)
* [Documentation Style Guide](contributors-guide/documentation/documentation-style-guide.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
We follow the [Standard style guidelines](https://github.com/feross/standard). A
For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
-### Code Quality Metrics
-
-We follow the following standards for Code Metrics
-
###
+# API Documentation
+
+All APIs should be documented in RAML or Swagger, see Architecture-Documentation-Guidelines\]\(Architecture-Documentation-Guidelines.md\)
+
+
+
+**Section Headings**
+
+* Do not number headings - for example, "Prepare and Fulfill", not "C - Prepare and Fulfill"
+* Make sure section headings \(\# \) match the heading to which they correspond in the comprehensive PDF \(built from the [dactyl config file](https://github.com/Mojaloop/Docs/blob/master/ExportDocs/dactyl-config.yml)\)
+* Do not include the word "documentation" in headings
+
+#### Retrievability
+
+* For sections that contain many subsections of endpoints or methods, provide a table of contents at the beginning of the section
+* Don't say the word project; use component, microservice, interfaces, etc
+
+#### Language
+
+Instead of the word "project," use a specific noun such as component, microservice, or interface.
+
+#### Procedures
+
+* Introduce procedures with H3 \(\#\#\#\) or H4 \(\#\#\#\#\) headers \(not H2 \(\#\#\)\).
+* Do not use numbers in procedure section headings.
+* Use ordered-list tagging for procedure steps. For example:
+* Step 1
+* Step 2
+* Step 2
+
* [Code Quality Metrics](contributors-guide/tools-and-technologies/code-quality-metrics.md)
* [Automated Testing](contributors-guide/tools-and-technologies/automated-testing.md)
* [Documentation](contributors-guide/documentation/README.md)
- * [API Documentation](contributors-guide/documentation/api-documentation.md)
* [Documentation Style Guide](contributors-guide/documentation/documentation-style-guide.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
We follow the [Standard style guidelines](https://github.com/feross/standard). A
For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
+### Code Quality Metrics
+
+We follow the following standards for Code Metrics
+
###
# Current Version
-Current versions A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
+A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
-At of March 2019, the active releases for core central services are as below
+At of March 6th 2019, the active releases for core central services are as below
-* helm: v5.2.0
-* central-ledger: v5.2.0
-* ml-api-adapter: v5.2.0
+* helm: **v5.2.0**
+* central-ledger: v5.3.0
+* ml-api-adapter: v5.2.1
* central-settlement: v5.2.0
-* central-event-processor: v5.2.0
-* email-notifier: v5.2.0
-
+* central-event-processor: v5.3.0
+* email-notifier: v5.3.0
* [Code Quality Metrics](contributors-guide/tools-and-technologies/code-quality-metrics.md)
* [Automated Testing](contributors-guide/tools-and-technologies/automated-testing.md)
* [Documentation](contributors-guide/documentation/README.md)
+ * [API Documentation](contributors-guide/documentation/api-documentation.md)
* [Documentation Style Guide](contributors-guide/documentation/documentation-style-guide.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
We follow the [Standard style guidelines](https://github.com/feross/standard). A
For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
-### Code Quality Metrics
-
-We follow the following standards for Code Metrics
-
###
+# API Documentation
+
+All APIs should be documented in RAML or Swagger, see Architecture-Documentation-Guidelines\]\(Architecture-Documentation-Guidelines.md\)
+
+
+
+**Section Headings**
+
+* Do not number headings - for example, "Prepare and Fulfill", not "C - Prepare and Fulfill"
+* Make sure section headings \(\# \) match the heading to which they correspond in the comprehensive PDF \(built from the [dactyl config file](https://github.com/Mojaloop/Docs/blob/master/ExportDocs/dactyl-config.yml)\)
+* Do not include the word "documentation" in headings
+
+#### Retrievability
+
+* For sections that contain many subsections of endpoints or methods, provide a table of contents at the beginning of the section
+* Don't say the word project; use component, microservice, interfaces, etc
+
+#### Language
+
+Instead of the word "project," use a specific noun such as component, microservice, or interface.
+
+#### Procedures
+
+* Introduce procedures with H3 \(\#\#\#\) or H4 \(\#\#\#\#\) headers \(not H2 \(\#\#\)\).
+* Do not use numbers in procedure section headings.
+* Use ordered-list tagging for procedure steps. For example:
+* Step 1
+* Step 2
+* Step 2
+
* [Contributors Guide](contributors-guide/README.md)
* [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
* [Current Version](contributors-guide/mojaloop-deployment/current-versions.md)
- * [Standards](contributors-guide/standards.md)
+ * [Standards](contributors-guide/standards/README.md)
+ * [Versioning](contributors-guide/standards/versioning.md)
+ * [Creating new Features](contributors-guide/standards/creating-new-features.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
+ * [Code Quality Metrics](contributors-guide/tools-and-technologies/code-quality-metrics.md)
* [Automated Testing](contributors-guide/tools-and-technologies/automated-testing.md)
- * [Documentation](contributors-guide/documentation.md)
+ * [Documentation](contributors-guide/documentation/README.md)
+ * [Documentation Style Guide](contributors-guide/documentation/documentation-style-guide.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
* [Core Scenarios](mojaloop-background/core-scenarios.md)
description: Mojaloop Contributors Guide
### \* Review the [Mojaloop Deployment](mojaloop-deployment/#mojaloop-deployment) Guide
-### \* Get familiar with our [Standards](standards.md) on contributing to this project
+### \* Get familiar with our [Standards](standards/) on contributing to this project
### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue")
+# Documentation
+
+### Overview
+
+Mojaloop has set forward several standards to ensure that documentation throughout the project is consistent and kept up to date.
+
+* All documentation that is relevant for contributors is kept on the "documentation" repository.
+* The "documentation" repository is sync'ed with GitBook and all content is consumed in an easily readable format on: [https://www.gitbook.com/mojaloop](https://www.gitbook.com/mojaloop)
+* All documentation should include:
+ * Overview: business overview to provide the value or reason for the documentation page
+ * Details: appropriate summary information to support the documentation
+
+###
+
+[Documentation standards](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-and-Template-Standards.md)
+
+### Documentation Style Guide
+
+All new documentation should confirm to the documentation and styles as discussed [here](documentation-style-guide.md).
+
+### Code Style Guide
+
+#### NodeJS
+
+We follow the [Standard style guidelines](https://github.com/feross/standard). Add `npm install standard` to you package.json.
+
+#### Java
+
+For Java we follow [Checkstyle](http://checkstyle.sourceforge.net/).Code Quality Metrics
+
+### Code Quality Metrics
+
+We follow the following standards for Code Metrics
+
+###
+
+# Documentation Style Guide
+
+In most cases, Mojaloop follows the latest edition of the Associated Press Stylebook. The following are foundation-specific guidelines which have been updated and slightly modified.
+
+#### Acronyms
+
+Spell out all acronyms on first reference. Include the acronym in parentheses immediately after the full spelling only if you refer to it again in the document. Example: _Kofi Annan, chairman of the board of the Alliance for a Green Revolution in Africa \(AGRA\), traveled to Nairobi this month. It was his first visit to the AGRA office._
+
+#### Ampersand
+
+Only use an ampersand \(&\) when it's part of a formal name like the Bill & Melinda Gates Foundation. In all other cases, spell out and.
+
+#### Bill & Melinda Gates Foundation
+
+Our formal legal name is the Bill & Melinda Gates Foundation. Use it on first reference. Always use the ampersand \(&\) and always capitalize Foundation when Bill & Melinda Gates comes before it.
+
+Never abbreviate the foundation's name as _BMGF_.
+
+Never translate the foundation name into other languages, as it is a proper noun. The one exception to this is when translating the foundation's name into Chinese, in which case translation is acceptable.
+
+Do not capitalize foundation when the word stands alone. Example: _The foundation's new headquarters will be built near Seattle Center._
+
+Use Gates Foundation only if you are sure the context makes the foundation's identity clear. There is a Gates Family Foundation in Colorado, so we need to be careful. Example: _The Bill & Melinda Gates Foundation and the Ford Foundation co-sponsored the event. A Gates Foundation staff member gave closing remarks._
+
+The entity that manages the endowment is formally and legally known as the Bill & Melinda Gates Foundation Trust. You will not need to refer to this entity often, but when you do, write it out on first reference and refer to it as the asset trust thereafter.
+
+#### Bold and colons
+
+Frequently I see structures \(like in this very comment!\) where you have introductory terms or phrases that are bolded and set apart from the contents with a colon. Should the colon also be bolded, or not? \(I frequently see it done both ways.\)
+
+#### Buffett
+
+Note the spelling: two fs and two ts \(_i.e., Warren Buffett_\).
+
+#### Bulleted lists
+
+Introduce bulleted lists with a colon when the listed items complete the lead-in sentence or phrase. Exception: never use colons in headings or subheadings to introduce bulleted lists.
+
+Capitalize the first words of and use periods with listed items only if they are full sentences. Examples:
+
+* _This is a complete sentence._
+* _not a complete sentence_
+
+Never link items in a bulleted list with coordinating conjunctions and punctuation \(semicolons or commas\) as you would in a sentence-style list. In other words, never do:
+
+* _this,_
+* _that, or_
+* _the other thing._
+
+#### Captions
+
+Caption photos whenever possible. It helps people understand our work.
+
+Write captions as single gerund \(_ing verb_\) phrases, followed by the city, state or country, and year the photo was taken in parentheses. Example: _A doctor preparing a vaccine for delivery_ \(Brazzaville, Congo, 2007\).\_
+
+When writing a caption, be sure to introduce the people featured and explain what's happening in the image as it relates to our areas of focus. Be as brief as possible so you don't distract from the image or layout. Avoid verbs that state the obvious about what the photo's subject is doing _\(e.g., smiling, standing, and so on\)._
+
+If one of the co-chairs appears in a photo with other people, be sure to identify the co-chair in the caption. Don't assume everyone knows what our co-chairs look like.
+
+#### Citations
+
+Most fields have their own citation conventions. Adopt those used by the field in question. When citation conventions are unavailable or uncertain, follow The Chicago Manual of Style.
+
+When a document uses both footnotes and endnotes, for the footnotes, use the following symbols:
+
+* 1st note = \* \(asterisk\)
+* 2nd note = † \(dagger\)
+* 3rd note = ‡ \(double dagger\)
+* 4th note = § \(section sign\)
+* 5th note = \*\* \(2 asterisks\)
+* 6th note = †† \(2 daggers\)
+* 7th note = ‡‡ \(2 double daggers\)
+* 8th note = §§ \(2 section signs\)
+
+Separate multiple superscript references \(footnotes, endnotes\) with commas, not semicolons.
+
+#### Clinical trials
+
+Use Roman numerals when referring to clinical trial phases and always capitalize Phase. Example: The company will begin Phase III trials on the new drug this spring.
+
+#### Contact information
+
+Use periods to separate parts of phone numbers, and begin each number with a plus sign.
+
+Because we work with people throughout the world, omit the international access code, which differs from country to country \(it's 011 in the United States\). Examples: _+1.206.709.3100 \(United States\)_ _+91.11.4100.3100 \(India\)_
+
+#### Copyright and trademark notice
+
+All publications, media, and materials produced by or for the foundation should contain the notice shown below. The Legal team must approve all exceptions.
+
+ _© \(year\) Bill & Melinda Gates Foundation. All Rights Reserved._ Bill & Melinda Gates Foundation is a registered trademark in the United States and other countries.
+
+When possible, begin the trademark portion of the notice on a separate line.
+
+#### Dashes
+
+Use dashes—those the width of a capital M—to indicate asides or abrupt changes in thought. Use en dashes—those the width of a capital N—with numerical ranges.
+
+Do not include a space before or after a dash.
+
+Examples: _We work to make safe, affordable financial services—particularly savings accounts—more widely available to people in developing countries._
+
+_In the 2004 presidential election, 76 percent of U.S. college graduates ages 25-44 voted._
+
+#### Dollars \($\)
+
+In Global Health and Global Development materials, because more than a dozen countries use dollars, specify U.S. dollars in parentheses on first mention in a document. Example: _$100,000 \(U.S.\)_. Omit the parenthetical U.S. in subsequent references to dollar amounts in the same document.
+
+#### Foundation program names
+
+We have three programs: Global Development Program, Global Health Program, and United States Program.
+
+_Program_ is capitalized when used with the full name \(Global Development Program\), but not when used alone \(The program makes grants in several areas.\).
+
+Use periods when abbreviating the name of the United States Program: U.S. Program.
+
+GH, GD, and USP are fine for internal use, but inappropriate for external publications.
+
+#### Gates family
+
+William Gates III is formally referred to as Bill Gates. In internal documents, use Bill—not a nickname or abbreviation.
+
+Use Melinda Gates when formally referring to Melinda.
+
+Use William H. Gates Sr. when formally referring to Bill Gates Sr. There is no comma between Gates and Sr. Bill Sr. is acceptable in internal documents.
+
+Plural: Gateses. Do not use an apostrophe to form the plural of the family's name. Example: The Gateses attended the opening of the new University of Washington law building.
+
+Possessive: The apostrophe follows Gates when you refer to something owned by either Bill or Melinda. Example: Melinda Gates' speech was well received. The apostrophe follows Gateses when you refer to something Bill and Melinda own jointly. Example: _The Gateses' decision to provide free Internet access in U.S. public libraries has increased library usage and circulation overall._
+
+You may also phrase it this way: Bill and Melinda Gates' decision to provide free Internet access …
+
+See the Titles of people entry for the formal titles of Bill, Melinda, Bill Sr., and other leaders of the foundation.
+
+#### Hyphens
+
+There are few hard-and-fast rules when it comes to hyphens. Generally we use them to enhance the reader's understanding.
+
+Examples: _When writing for the Bill & Melinda Gates Foundation, use real-world poverty examples to illustrate your point._ _When writing for the Bill & Melinda Gates Foundation, use real world-poverty examples to illustrate your point._
+
+In the first example, the hyphen in real-world connects real and world to form a single adjective describing poverty. In the second example, the hyphen in world-poverty connects world and poverty to form a single adjective describing examples.
+
+The meaning changes depending on the placement of the hyphen. In instances where a series of adjectives creates ambiguity about what they refer to, use a hyphen to clarify the intended meaning.
+
+When capitalizing hyphenated words, only capitalize the first part. Example: _Co-chairs Bill and Melinda Gates._
+
+For other uses of hyphens—compound modifiers, prefixes and suffixes, fractions—refer to the Associated Press Stylebook.
+
+#### Numerals
+
+When referring to dollar figures, spell out million and billion. Use figures and decimals \(not fractions\). Do not go beyond two decimal places. Example: _The foundation granted .45 million to United Way._
+
+When using numbers that have nothing to do with dollar figures or percentages, write them out if they are under 10, and use numerals if they are 10 or over. Example: Four program officers went on 13 site visits.
+
+In cases of grammatical parallelism, parallel construction always trumps this rule. For instance: Mr. Johnson has two children, 5-year-old Kyle and 13-year-old Frances.
+
+Never begin a sentence with a numeral. Either spell the number out or revise the sentence so it doesn't begin with a number.
+
+#### Percentages
+
+When using percentages, write out percent \(don't use %\). Use numerals instead of writing numbers out, even if they're less than 10.
+
+Example: _This program accounts for 6 percent of our grantmaking._
+
+#### Photographer credits
+
+If the foundation owns the image you are using, you don't need to credit the photographer. All images in our media asset management system are foundation-owned. If the foundation has purchased a license to use the image, you may need to credit the photographer. If you have questions about photo credit requirements, contact the Foundation Communications Service Desk.
+
+#### Plain language
+
+We could call out a few specific constructions that are needlessly wordy. One that we frequently catch at Ripple is "in order to" instead of just "to."
+
+#### Quotation marks
+
+Use double quotation marks for dialogue and the citation of printed sources. Limit use of scare quotes—quotation marks meant to call attention to a quoted word or phrase and distance the author from its meaning, typically because the language is specialized, idiomatic, ironic, or misused. Example: _The foundation has increasingly used “program-related investments” in recent years._
+
+#### Quoted strings and punctuation
+
+When describing exact strings in technical documentation, should punctuation \(not part of the literal strings\) be included in the quotation marks? For example, valid states include "pending," "in progress," and "completed."
+
+#### Scientific names
+
+Capitalize and italicize scientific names in accordance with conventions in the scientific community. Use the full version of a scientific name on first mention and the abbreviated form thereafter. For example, _use Salmonella typhi first and S. typhi for each additional reference._
+
+#### Serial commas
+
+With lists of three or more items in a sentence, add a final comma before the coordinating conjunction and or or. Example: _The foundation's three program areas are Global Development, Global Health, and the United States._
+
+#### Spacing after punctuation
+
+Use only one space after punctuation, including periods, colons, and semicolons.
+
+#### Spelling and capitalization conventions
+
+_bed net:_ two words, no hyphen.
+
+_email:_ one word, no hyphen, lowercase.
+
+_foundation:_ lowercase, except as part of the full foundation name.
+
+_grantmaking:_ one word, no hyphen.
+
+_nongovernmental:_ one word, no hyphen.
+
+_nonprofit:_ one word, no hyphen.
+
+_postsecondary:_ one word, no hyphen.
+
+_Washington state:_ lowercase state \(unless you're referring to Washington State University, the Washington State Legislature, or something similar\).
+
+_website:_ one word, lowercase
+
+#### Titles of people
+
+Formal titles should not be capitalized unless the title precedes a person's name or appears in a headline. Example: _Co-chair Melinda Gates will speak at the Washington Economic Club this year._
+
+Lowercase and spell out titles when they are not used with an individual's name. Example: _The foundation co-chair issued a statement._
+
+Lowercase and spell out titles in constructions that use commas to set them off from a name. Example: _Bill Gates, co-chair of the foundation, commented on the grant._
+
+#### United States
+
+Spell out United States when using it as a noun. Abbreviate it as U.S. \(including periods\) when using it as an adjective. In certain cases, as when referring to a person from the United States, it's acceptable to use American.
+
+Examples: _The U.S. State Department is in the United States._ _The foundation's U.S. Program…_
+
+#### URL
+
+Reference web addresses without the http:// as follows: _www.gatesfoundation.org_
+
+# Standards
+
+## Standards
+
+### Standards for adopting an Open Source contribution into Mojaloop
+
+This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
+
+#### Prerequisites
+
+1. The contribution should be in-line with the LevelOne Principles
+2. Basic guidelines regarding status of the contribution \(Code-base / Standards / Designs / Specifications\)
+3. Basic documentation to get started
+
+#### Guidelines regarding adoption
+
+1. Create a private repo on the Mojaloop GitHub organization
+2. Have a sub-team of the DA take a look to make sure its portable \(to OSS\) - aligns with L1P principles, etc, and ensure design is in line with standards
+3. Check Licensing
+4. Assess Performance impact
+5. Create action items \(stories\) to update naming, remove/sanitize any items that are not generic
+6. Configuration for 'modes of operation'
+7. Enable CI/CD pipeline
+
+### Versioning
+
+Review the information on [versioning](versioning.md) for Mojaloop.
+
+### Creating new Features
+
+Process for creating new [features and branches](creating-new-features.md) in Mojaloop.
+
+### Pull Request Process
+
+It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
+
+### Code of conduct
+
+We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
+
+### Licensing
+
+See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+##
+
+# Creating new Features
+
+### Fork
+
+Fork the Mojaloop repository into your own personal space. Ensure that you keep the `master` branch in sync.
+
+Refer to the following documentation for more information: [https://help.github.com/articles/fork-a-repo/](https://help.github.com/articles/fork-a-repo/)
+
+1. Clone repo using Git Fork button \(refer to the above documentation for more information\)
+2. Clone your forked repo: `git clone https://github.com//.git`
+3. Synchronise your forked repo with Mojaloop
+
+ Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
+
+ You should now see that you have two remotes:
+
+ ```bash
+ git remote -v
+ origin https://github.com//.git (fetch)
+ origin https://github.com//.git (push)
+ mojaloop https://github.com/mojaloop/.git (fetch)
+ mojaloop https://github.com/mojaloop/.git (push)
+ ```
+
+4. To sync to your current branch: `git pull mojaloop ` This will merge any changes from Mojaloop's repo into your forked repo.
+5. Push the changes back to your remote fork: `git push origin `
+
+### Creating a Branch
+
+Create a new branch from the `master` branch with the following format: `/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
+
+1. Create and checkout the branch: `git checkout -b /`
+2. Push the branch to your remote: `git push origin /`
+
+Where `` can be one of the following:
+
+| branchType | Description |
+| :--- | :--- |
+| feature | Any new or maintenance features that are in active development. |
+| hotfix | A hotfix branch is for any urgent fixes. |
+| release | A release branch containing a snapshot of a release. |
+| backup | A temporary backup branch. Used normally during repo maintenance. |
+
+### Merge into Mojaloop Repo
+
+Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
+
+# Versioning
+
+## Versioning of releases made for core Switch services
+
+This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
+
+### Versioning Strategy
+
+1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
+2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
+3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
+
+### Current Version
+
+The currrent version information for Mojaloop can be found [here](../mojaloop-deployment/current-versions.md).
+
+### Notes
+
+1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
+2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
+###
+
Here we document the reasoning behind certain tools, technology and process choi
* **Agile development** - This methodology is used to track and run the project. The requirements need to be refined as the project is developed, therefore we picked agile development over waterfall or lean.
* **APIs** - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our [Pragmatic REST](pragmatic-rest.md) design pattern. APIs will be defined using OpenAPI or RAML. Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
-* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](automated-testing.md).
+* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](automated-testing.md) and [code quality metrics](code-quality-metrics.md) for standards.
* **Hosting** - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.
* **Interledger** – Mojaloop needed a lightweight, open, and secure transport protocol for funds. [Interledger.org](http://Interledger.org) provides all that. It also provides the ability to connect to other systems. We also considered block chain systems, but block chain systems send very large messages which will be harder to guarantee delivery of in third world infrastructure. Also, while blockchain systems provide good anonymity, that is not a project goal. To enable fraud detection, regulatory authorities need to be able to request records of transfers by account and person.
* **Open source** - The entire project has been released as open source in accordance with the [Level One Project principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf). All tools and processes must be open source friendly and support projects that use an Apache 2.0 license with no restrictive licenses requirements on developers.
+# Code Quality Metrics
+
+## Functional quality metrics
+
+### Unit test metrics
+
+High coverage and low dependencies show that the code is testable and therefore well isolated and easy to maintain. Low complexity also makes code readable and maintainable and helps enforce single responsibility. Real unit tests run very fast as they don't call external components.
+
+| Code Quality Metrics | New and Project Code |
+| :--- | :--- |
+| Unit test coverage | >= 80% block coverage |
+| Unit test speed | <= 10 seconds |
+| Dependencies/method | <= 10 |
+| Complexity/method | <= 7 |
+
+### Component
+
+Functional testing typically covers pair combinations of the system states.
+
+### Integration
+
+Functional tests have one test per message and error. Messages and errors that are handled the same way use the same test.
+
+### Contract
+
+Limited to what the consuming teams need that isn't covered by existing unit, component, and integration tests. Often added to over time.
+
+### End to End
+
+End to end tests cover acceptance tests from scenarios.
+
1. Added gitignore 2. Added account-lookup-service.md 3. Added ALS arch diagrams for party and participants
+# --------------- #
+# IntelliJ #
+# --------------- #
+.idea/
+**/*.iml
+
+# VSCode directory
+.vscode
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Parties Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]A 8. Get receiver details[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve both the POST and PUT end-points)A1. Request Party Lookup GET /parties/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]A7. User Lookup GET /parties/<idType>/<id>A7. User Lookup <br>GET /parties/<idType>/<id>Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. Alt[Not supported by viewer]<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A9. User Lookup PUT /parties/<idType>/<id>A9. User Lookup <br>PUT /parties/<idType>/<id>A10. User Lookup PUT /parties/<idType>/<id>A10. User Lookup <br>PUT /parties/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
+
+
+Account Lookup Service(ALS)[Not supported by viewer]FSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]FSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]Participants Account Lookup[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]Party Store[Not supported by viewer]PartyStore[Not supported by viewer]Persistance store[Not supported by viewer]Central LedgerService[Not supported by viewer]A5. Retrieve Participant Data GET /participants/<participantId>/endpoints(retrieve the PUT end-point)A1. Request Participant Lookup GET /participants/<idType>/<id>[Not supported by viewer]A3. Request Participant Lookup via OracleGET /participants/<idType>/<id>[Not supported by viewer]Oracle MerchantRegistry Service<idType = 'BUSINESS'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Persistance store[Not supported by viewer]Oracle Bank AccountRegistry Service<idType = 'ACCOUNT_ID'>[Not supported by viewer]A4. AltA4. Alt<font color="#000000"><br></font>Oracle PathfinderRegistry ServiceAdapter<idType = 'MSISDN'>[Not supported by viewer]A4. Retrieve Participant Data[Not supported by viewer]<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>A3. AltA3. Alt<font color="#000000"><br></font>Mojaloop Central Services[Not supported by viewer]A7. User Lookup PUT /participants/<idType>/<id>A7. User Lookup <br>PUT /participants/<idType>/<id>Central Ledger DBCentral Ledger DBA6. Retrieve Participant End-point DataA6. Retrieve Participant End-point Data<font color="#000000"><br></font>ALSDB[Not supported by viewer]A2. Lookup Oracle Registry Service End-points based on <idType>Hub Operator Schema Hosted[Not supported by viewer]Externally Hosted[Not supported by viewer]PathFinder GSMA[Not supported by viewer]API Internal Use-OnlyAPI <br>Internal Use-OnlyMojaloop APISpecification v1.0Mojaloop API<br>Specification v1.0<br>Key[Not supported by viewer]
\ No newline at end of file
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
* [Automated Testing](contributors-guide/tools-and-technologies/automated-testing.md)
- * [Documentation](contributors-guide/documentation/README.md)
- * [Documentation Style Guide](contributors-guide/documentation/documentation-style-guide.md)
+ * [Documentation](contributors-guide/documentation.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
* [Core Scenarios](mojaloop-background/core-scenarios.md)
+# Central-Ledger Services
+
+The Account Lookup Service as per the Mojaloop specification has the following use-cases:
+
+* Participant Look-up
+* Create Participant
+* Party Look-up
+
+## Participant
+
+
+
+
+## Party
+
+
+
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
* [Automated Testing](contributors-guide/tools-and-technologies/automated-testing.md)
- * [Documentation](contributors-guide/documentation.md)
+ * [Documentation](contributors-guide/documentation/README.md)
+ * [Documentation Style Guide](contributors-guide/documentation/documentation-style-guide.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
* [Core Scenarios](mojaloop-background/core-scenarios.md)
+# Documentation Style Guide
+
+In most cases, Mojaloop follows the latest edition of the Associated Press Stylebook. The following are foundation-specific guidelines which have been updated and slightly modified.
+
+#### Acronyms
+
+Spell out all acronyms on first reference. Include the acronym in parentheses immediately after the full spelling only if you refer to it again in the document. Example: _Kofi Annan, chairman of the board of the Alliance for a Green Revolution in Africa \(AGRA\), traveled to Nairobi this month. It was his first visit to the AGRA office._
+
+#### Ampersand
+
+Only use an ampersand \(&\) when it's part of a formal name like the Bill & Melinda Gates Foundation. In all other cases, spell out and.
+
+#### Bill & Melinda Gates Foundation
+
+Our formal legal name is the Bill & Melinda Gates Foundation. Use it on first reference. Always use the ampersand \(&\) and always capitalize Foundation when Bill & Melinda Gates comes before it.
+
+Never abbreviate the foundation's name as _BMGF_.
+
+Never translate the foundation name into other languages, as it is a proper noun. The one exception to this is when translating the foundation's name into Chinese, in which case translation is acceptable.
+
+Do not capitalize foundation when the word stands alone. Example: _The foundation's new headquarters will be built near Seattle Center._
+
+Use Gates Foundation only if you are sure the context makes the foundation's identity clear. There is a Gates Family Foundation in Colorado, so we need to be careful. Example: _The Bill & Melinda Gates Foundation and the Ford Foundation co-sponsored the event. A Gates Foundation staff member gave closing remarks._
+
+The entity that manages the endowment is formally and legally known as the Bill & Melinda Gates Foundation Trust. You will not need to refer to this entity often, but when you do, write it out on first reference and refer to it as the asset trust thereafter.
+
+#### Bold and colons
+
+Frequently I see structures \(like in this very comment!\) where you have introductory terms or phrases that are bolded and set apart from the contents with a colon. Should the colon also be bolded, or not? \(I frequently see it done both ways.\)
+
+#### Buffett
+
+Note the spelling: two fs and two ts \(_i.e., Warren Buffett_\).
+
+#### Bulleted lists
+
+Introduce bulleted lists with a colon when the listed items complete the lead-in sentence or phrase. Exception: never use colons in headings or subheadings to introduce bulleted lists.
+
+Capitalize the first words of and use periods with listed items only if they are full sentences. Examples:
+
+* _This is a complete sentence._
+* _not a complete sentence_
+
+Never link items in a bulleted list with coordinating conjunctions and punctuation \(semicolons or commas\) as you would in a sentence-style list. In other words, never do:
+
+* _this,_
+* _that, or_
+* _the other thing._
+
+#### Captions
+
+Caption photos whenever possible. It helps people understand our work.
+
+Write captions as single gerund \(_ing verb_\) phrases, followed by the city, state or country, and year the photo was taken in parentheses. Example: _A doctor preparing a vaccine for delivery_ \(Brazzaville, Congo, 2007\).\_
+
+When writing a caption, be sure to introduce the people featured and explain what's happening in the image as it relates to our areas of focus. Be as brief as possible so you don't distract from the image or layout. Avoid verbs that state the obvious about what the photo's subject is doing _\(e.g., smiling, standing, and so on\)._
+
+If one of the co-chairs appears in a photo with other people, be sure to identify the co-chair in the caption. Don't assume everyone knows what our co-chairs look like.
+
+#### Citations
+
+Most fields have their own citation conventions. Adopt those used by the field in question. When citation conventions are unavailable or uncertain, follow The Chicago Manual of Style.
+
+When a document uses both footnotes and endnotes, for the footnotes, use the following symbols:
+
+* 1st note = \* \(asterisk\)
+* 2nd note = † \(dagger\)
+* 3rd note = ‡ \(double dagger\)
+* 4th note = § \(section sign\)
+* 5th note = \*\* \(2 asterisks\)
+* 6th note = †† \(2 daggers\)
+* 7th note = ‡‡ \(2 double daggers\)
+* 8th note = §§ \(2 section signs\)
+
+Separate multiple superscript references \(footnotes, endnotes\) with commas, not semicolons.
+
+#### Clinical trials
+
+Use Roman numerals when referring to clinical trial phases and always capitalize Phase. Example: The company will begin Phase III trials on the new drug this spring.
+
+#### Contact information
+
+Use periods to separate parts of phone numbers, and begin each number with a plus sign.
+
+Because we work with people throughout the world, omit the international access code, which differs from country to country \(it's 011 in the United States\). Examples: _+1.206.709.3100 \(United States\)_ _+91.11.4100.3100 \(India\)_
+
+#### Copyright and trademark notice
+
+All publications, media, and materials produced by or for the foundation should contain the notice shown below. The Legal team must approve all exceptions.
+
+ _© \(year\) Bill & Melinda Gates Foundation. All Rights Reserved._ Bill & Melinda Gates Foundation is a registered trademark in the United States and other countries.
+
+When possible, begin the trademark portion of the notice on a separate line.
+
+#### Dashes
+
+Use dashes—those the width of a capital M—to indicate asides or abrupt changes in thought. Use en dashes—those the width of a capital N—with numerical ranges.
+
+Do not include a space before or after a dash.
+
+Examples: _We work to make safe, affordable financial services—particularly savings accounts—more widely available to people in developing countries._
+
+_In the 2004 presidential election, 76 percent of U.S. college graduates ages 25-44 voted._
+
+#### Dollars \($\)
+
+In Global Health and Global Development materials, because more than a dozen countries use dollars, specify U.S. dollars in parentheses on first mention in a document. Example: _$100,000 \(U.S.\)_. Omit the parenthetical U.S. in subsequent references to dollar amounts in the same document.
+
+#### Foundation program names
+
+We have three programs: Global Development Program, Global Health Program, and United States Program.
+
+_Program_ is capitalized when used with the full name \(Global Development Program\), but not when used alone \(The program makes grants in several areas.\).
+
+Use periods when abbreviating the name of the United States Program: U.S. Program.
+
+GH, GD, and USP are fine for internal use, but inappropriate for external publications.
+
+#### Gates family
+
+William Gates III is formally referred to as Bill Gates. In internal documents, use Bill—not a nickname or abbreviation.
+
+Use Melinda Gates when formally referring to Melinda.
+
+Use William H. Gates Sr. when formally referring to Bill Gates Sr. There is no comma between Gates and Sr. Bill Sr. is acceptable in internal documents.
+
+Plural: Gateses. Do not use an apostrophe to form the plural of the family's name. Example: The Gateses attended the opening of the new University of Washington law building.
+
+Possessive: The apostrophe follows Gates when you refer to something owned by either Bill or Melinda. Example: Melinda Gates' speech was well received. The apostrophe follows Gateses when you refer to something Bill and Melinda own jointly. Example: _The Gateses' decision to provide free Internet access in U.S. public libraries has increased library usage and circulation overall._
+
+You may also phrase it this way: Bill and Melinda Gates' decision to provide free Internet access …
+
+See the Titles of people entry for the formal titles of Bill, Melinda, Bill Sr., and other leaders of the foundation.
+
+#### Hyphens
+
+There are few hard-and-fast rules when it comes to hyphens. Generally we use them to enhance the reader's understanding.
+
+Examples: _When writing for the Bill & Melinda Gates Foundation, use real-world poverty examples to illustrate your point._ _When writing for the Bill & Melinda Gates Foundation, use real world-poverty examples to illustrate your point._
+
+In the first example, the hyphen in real-world connects real and world to form a single adjective describing poverty. In the second example, the hyphen in world-poverty connects world and poverty to form a single adjective describing examples.
+
+The meaning changes depending on the placement of the hyphen. In instances where a series of adjectives creates ambiguity about what they refer to, use a hyphen to clarify the intended meaning.
+
+When capitalizing hyphenated words, only capitalize the first part. Example: _Co-chairs Bill and Melinda Gates._
+
+For other uses of hyphens—compound modifiers, prefixes and suffixes, fractions—refer to the Associated Press Stylebook.
+
+#### Numerals
+
+When referring to dollar figures, spell out million and billion. Use figures and decimals \(not fractions\). Do not go beyond two decimal places. Example: _The foundation granted .45 million to United Way._
+
+When using numbers that have nothing to do with dollar figures or percentages, write them out if they are under 10, and use numerals if they are 10 or over. Example: Four program officers went on 13 site visits.
+
+In cases of grammatical parallelism, parallel construction always trumps this rule. For instance: Mr. Johnson has two children, 5-year-old Kyle and 13-year-old Frances.
+
+Never begin a sentence with a numeral. Either spell the number out or revise the sentence so it doesn't begin with a number.
+
+#### Percentages
+
+When using percentages, write out percent \(don't use %\). Use numerals instead of writing numbers out, even if they're less than 10.
+
+Example: _This program accounts for 6 percent of our grantmaking._
+
+#### Photographer credits
+
+If the foundation owns the image you are using, you don't need to credit the photographer. All images in our media asset management system are foundation-owned. If the foundation has purchased a license to use the image, you may need to credit the photographer. If you have questions about photo credit requirements, contact the Foundation Communications Service Desk.
+
+#### Plain language
+
+We could call out a few specific constructions that are needlessly wordy. One that we frequently catch at Ripple is "in order to" instead of just "to."
+
+#### Quotation marks
+
+Use double quotation marks for dialogue and the citation of printed sources. Limit use of scare quotes—quotation marks meant to call attention to a quoted word or phrase and distance the author from its meaning, typically because the language is specialized, idiomatic, ironic, or misused. Example: _The foundation has increasingly used “program-related investments” in recent years._
+
+#### Quoted strings and punctuation
+
+When describing exact strings in technical documentation, should punctuation \(not part of the literal strings\) be included in the quotation marks? For example, valid states include "pending," "in progress," and "completed."
+
+#### Scientific names
+
+Capitalize and italicize scientific names in accordance with conventions in the scientific community. Use the full version of a scientific name on first mention and the abbreviated form thereafter. For example, _use Salmonella typhi first and S. typhi for each additional reference._
+
+#### Serial commas
+
+With lists of three or more items in a sentence, add a final comma before the coordinating conjunction and or or. Example: _The foundation's three program areas are Global Development, Global Health, and the United States._
+
+#### Spacing after punctuation
+
+Use only one space after punctuation, including periods, colons, and semicolons.
+
+#### Spelling and capitalization conventions
+
+_bed net:_ two words, no hyphen.
+
+_email:_ one word, no hyphen, lowercase.
+
+_foundation:_ lowercase, except as part of the full foundation name.
+
+_grantmaking:_ one word, no hyphen.
+
+_nongovernmental:_ one word, no hyphen.
+
+_nonprofit:_ one word, no hyphen.
+
+_postsecondary:_ one word, no hyphen.
+
+_Washington state:_ lowercase state \(unless you're referring to Washington State University, the Washington State Legislature, or something similar\).
+
+_website:_ one word, lowercase
+
+#### Titles of people
+
+Formal titles should not be capitalized unless the title precedes a person's name or appears in a headline. Example: _Co-chair Melinda Gates will speak at the Washington Economic Club this year._
+
+Lowercase and spell out titles when they are not used with an individual's name. Example: _The foundation co-chair issued a statement._
+
+Lowercase and spell out titles in constructions that use commas to set them off from a name. Example: _Bill Gates, co-chair of the foundation, commented on the grant._
+
+#### United States
+
+Spell out United States when using it as a noun. Abbreviate it as U.S. \(including periods\) when using it as an adjective. In certain cases, as when referring to a person from the United States, it's acceptable to use American.
+
+Examples: _The U.S. State Department is in the United States._ _The foundation's U.S. Program…_
+
+#### URL
+
+Reference web addresses without the http:// as follows: _www.gatesfoundation.org_
+
* [Core Scenarios](mojaloop-background/core-scenarios.md)
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
+ * [Fraud Services](mojaloop-technical-overview/fraud-services.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
* [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
description: Mojaloop Contributors Guide
### \* Get familiar with our [Standards](standards.md) on contributing to this project
-### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
+### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue")
### \* Review the [Roadmap](../mojaloop-roadmap.md) and contribute to future opportunities
## What work is needed?
-Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with "[good first issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)". In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
+Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with "[good first issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue")". In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
There's a [roadmap](../mojaloop-roadmap.md) that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
-# Current Versions
+# Current Version
-Current versions
-A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
+Current versions A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
At of March 2019, the active releases for core central services are as below
At of March 2019, the active releases for core central services are as below
* central-event-processor: v5.2.0
* email-notifier: v5.2.0
-
+# Fraud Services
+
+Overview of Fraud Services planned implementation.
+
* [Mojaloop Overview](README.md)
* [Contributors Guide](contributors-guide/README.md)
* [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
- * [Current Version](contributors-guide/mojaloop-deployment/current-version.md)
+ * [Current Version](contributors-guide/mojaloop-deployment/current-versions.md)
* [Standards](contributors-guide/standards.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
# Current Version
-As of March 4, 2019 our current release versions our as follows:
+Current versions
+A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
+At of March 2019, the active releases for core central services are as below
+
+* helm: v5.2.0
+* central-ledger: v5.2.0
+* ml-api-adapter: v5.2.0
+* central-settlement: v5.2.0
+* central-event-processor: v5.2.0
+* email-notifier: v5.2.0
* [Mojaloop Overview](README.md)
* [Contributors Guide](contributors-guide/README.md)
- * [Mojaloop Deployment](contributors-guide/mojaloop-deployment.md)
+ * [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
+ * [Current Version](contributors-guide/mojaloop-deployment/current-version.md)
* [Standards](contributors-guide/standards.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
description: Mojaloop Contributors Guide
## How do I contribute?
-### \* Review the [Mojaloop Deployment](mojaloop-deployment.md#mojaloop-deployment) Guide
+### \* Review the [Mojaloop Deployment](mojaloop-deployment/#mojaloop-deployment) Guide
### \* Get familiar with our [Standards](standards.md) on contributing to this project
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubeInfrastructureArch.png)
This provides environment resource recommendations with a view of the infrastruc
The tool set to be deployed as part of the deployment process.
-| Tool | Required/Optional | Description | Install Info |
-| :--- | :--- | :--- | :--- |
-
-
- Docker
- Required
-
+ Tool
+ Required/Optional
+ Description
+ Install Info
+
+
+
+
+ Docker
+ Required
+
Docker Engine and CLI Client
Local Kubernetes single node cluster
-
- [https://docs.docker.com/install](https://docs.docker.com/install)
+
+ [https://docs.docker.com/install](https://docs.docker.com/install)
-
-
-
-
- Kubectl
- Required
-
+ Kubectl
+ Required
+
Kubernetes CLI for Kubernetes Management
Note Docker installs this part of Kubernetes install
-
-
+
+
[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)
Docker Kubernetes Install (as per this guide)
Mac: `brew install kubernetes-cli`
Ubuntu: `sudo snap install kubectl --classic`
-
+
-
-
-
-
- Kubectx
- Optional(useful tool)
-
+ Kubectx
+ Optional(useful tool)
+
Kubernetes CLI for Kubernetes Context Management Helper
Note Docker installs this as part of Kubernetes install
-
-
+
+
[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
Mac: `brew install kubectx`
Ubuntu: `sudo apt install kubectx`
-
+
-
-
-
-
- Kubetail
- Optional(useful tool)
-
+ Kubetail
+ Optional(useful tool)
+
Bash script that enables you to aggregate (tail/follow) logs from multiple
pods into one stream. This is the same as running `kubectl logs -f` but
for multiple pods.
Example usage `kubetail moja.* -n demo`
-
- https://github.com/johanhaleby/kubetail
+
+ https://github.com/johanhaleby/kubetail
-
-
-
-
- Helm
- Required
-
+ Helm
+ Required
+
Helm helps you manage Kubernetes applications
Helm charts help you define, install and upgrade even the most complex
Kubernetes application
-
-
+
+
[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
Mac: `brew install kubernetes-helm`
Ubuntu: `sudo snap install helm --classic`
-
+
-
-
-| Postman | Required | Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces. | \[https://www.getpostman.com/apps\]\(https://www.getpostman.com/apps\) |
-| :--- | :--- | :--- | :--- |
-
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's.
+ It presents you with a friendly GUI for the construction requests and reading
+ responces.
+ [https://www.getpostman.com/apps](https://www.getpostman.com/apps)
+
+
+## 2 Deployment
This section will guide the reader through the deployment process to setup Kubernetes within Docker.
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
-

[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
-
- 
+
[kubernetes-dashboard](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/kubernetesDashboard.png)
or
### 2.2 Helm
-Please review [Mojaloop Helm Chart](https://github.com/mojaloop/documentation/tree/3511973fa37b3329321cdcbe97c0f27b78b0c8b8/Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
+Please review [Mojaloop Helm Chart](../../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
**2.2.1 Helm Chart Installation**
+# Current Version
+
+As of March 4, 2019 our current release versions our as follows:
+
+
+
This document provides guidelines regarding the versioning strategy used for the
2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
-### Current versions
-
-1. A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
-2. At the time of writing this, active releases for core central services are as below
- 1. helm: v5.1.2
- 2. central-ledger: v5.1.1
- 3. ml-api-adapter: v5.1.0
- 4. central-settlement: v5.1.1
- 5. central-event-processor: v5.1.0
- 6. email-notifier: v5.1.0
-
### Notes
1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
Here we document the reasoning behind certain tools, technology and process choi
* **Microservices** - Because the architecture needs to easily deploy, scale, and have components be easily replaced or upgraded, it will be built as a set of microservices.
* **Scaled Agile Framework** - There were four initial development teams that are geographically separate. To keep the initial phase of the project on track, the [scaled agile framework \(SAFe\)](https://www.scaledagileframework.com/) was picked. This means work is divided into program increments \(PI\) that are typically four 2 week sprints long. As with the sprints, the PI has demo-able objective goals defined in each PI meeting.
* **Services** - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
-* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it. To achieve this we employ basic tried and true [modeling practices](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines#second-round).
+* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it.
* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider \(DFSP\).
* [Standards](contributors-guide/standards.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
- * [Automated Testing](contributors-guide/tools-and-technologies/automated testing.md)
+ * [Automated Testing](contributors-guide/tools-and-technologies/automated-testing.md)
* [Documentation](contributors-guide/documentation.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
Here we document the reasoning behind certain tools, technology and process choi
* **Agile development** - This methodology is used to track and run the project. The requirements need to be refined as the project is developed, therefore we picked agile development over waterfall or lean.
* **APIs** - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our [Pragmatic REST](pragmatic-rest.md) design pattern. APIs will be defined using OpenAPI or RAML. Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
-* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines#second-round).
+* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](automated-testing.md).
* **Hosting** - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.
* **Interledger** – Mojaloop needed a lightweight, open, and secure transport protocol for funds. [Interledger.org](http://Interledger.org) provides all that. It also provides the ability to connect to other systems. We also considered block chain systems, but block chain systems send very large messages which will be harder to guarantee delivery of in third world infrastructure. Also, while blockchain systems provide good anonymity, that is not a project goal. To enable fraud detection, regulatory authorities need to be able to request records of transfers by account and person.
* **Open source** - The entire project has been released as open source in accordance with the [Level One Project principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf). All tools and processes must be open source friendly and support projects that use an Apache 2.0 license with no restrictive licenses requirements on developers.
* **Operating System** – Microsoft Windows is widely used in many target countries, but we need an operating system that is free of license fees and is open source compatible. We are using Linux. We don’t have a dependency on the particular flavor, but are using the basic Amazon Linux. In the Docker containers, [Alpine Linux](https://alpinelinux.org/) is used.
* **Microservices** - Because the architecture needs to easily deploy, scale, and have components be easily replaced or upgraded, it will be built as a set of microservices.
-* **Scaled Agile Framework** - There were four initial development teams that are geographically separate. To keep the initial phase of the project on track, the [scaled agile framework \(SAFe\)](https://github.com/mojaloop/documentation/tree/98262a19e88513238ddd3d7ac70c8e791f622677/contributors-guide/www.scaledagileframework.com) was picked. This means work is divided into program increments \(PI\) that are typically four 2 week sprints long. As with the sprints, the PI has demo-able objective goals defined in each PI meeting.
+* **Scaled Agile Framework** - There were four initial development teams that are geographically separate. To keep the initial phase of the project on track, the [scaled agile framework \(SAFe\)](https://www.scaledagileframework.com/) was picked. This means work is divided into program increments \(PI\) that are typically four 2 week sprints long. As with the sprints, the PI has demo-able objective goals defined in each PI meeting.
* **Services** - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it. To achieve this we employ basic tried and true [modeling practices](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines#second-round).
* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider \(DFSP\).
+# Automated Testing
+
+The page describes our automated testing philosophy along with the regression testing framework.
+
* [Standards](contributors-guide/standards.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
- * [Automated Testing)(contributors-guide/tools-and-technologies/automated testing.md)
+ * [Automated Testing](contributors-guide/tools-and-technologies/automated testing.md)
* [Documentation](contributors-guide/documentation.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
* [Standards](contributors-guide/standards.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
* [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
+ * [Automated Testing)(contributors-guide/tools-and-technologies/automated testing.md)
* [Documentation](contributors-guide/documentation.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
+# Automated Testing
+
+The page describes our automated testing philosophy along with the regression testing framework.
+# Automated Testing
+
+The page describes our automated testing philosophy along with the regression testing framework.
Here we document the reasoning behind certain tools, technology and process choi
**TECHNOLOGY CHOICES**
* **Agile development** - This methodology is used to track and run the project. The requirements need to be refined as the project is developed, therefore we picked agile development over waterfall or lean.
-* **APIs** - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our [Pragmatic REST](https://github.com/mojaloop/documentation/tree/98262a19e88513238ddd3d7ac70c8e791f622677/contributors-guide/Pragmatic-REST-Guidelines.md) design pattern. APIs will be defined using [OpenAPI or RAML](https://github.com/mojaloop/documentation/tree/98262a19e88513238ddd3d7ac70c8e791f622677/Docs/wiki/API-Documentation.md). Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
+* **APIs** - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our [Pragmatic REST](pragmatic-rest.md) design pattern. APIs will be defined using OpenAPI or RAML. Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines#second-round).
* **Hosting** - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.
* **Interledger** – Mojaloop needed a lightweight, open, and secure transport protocol for funds. [Interledger.org](http://Interledger.org) provides all that. It also provides the ability to connect to other systems. We also considered block chain systems, but block chain systems send very large messages which will be harder to guarantee delivery of in third world infrastructure. Also, while blockchain systems provide good anonymity, that is not a project goal. To enable fraud detection, regulatory authorities need to be able to request records of transfers by account and person.
With the emergence of API strategy as a scaling tool for Internet service busine
Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
-
+
Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
* [Contributors Guide](contributors-guide/README.md)
* [Mojaloop Deployment](contributors-guide/mojaloop-deployment.md)
* [Standards](contributors-guide/standards.md)
- * [Tools and Technologies](contributors-guide/tools-and-technologies.md)
+ * [Tools and Technologies](contributors-guide/tools-and-technologies/README.md)
+ * [Pragmatic REST](contributors-guide/tools-and-technologies/pragmatic-rest.md)
* [Documentation](contributors-guide/documentation.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
+# Pragmatic REST
+
+## Pragmatic REST For the Mojaloop Project
+
+With the emergence of API strategy as a scaling tool for Internet service businesses, the focus on interconnect technology has shifted. Building on the principles that enabled the Web to form and scale, REST \(Representational State Transfer\) has become a design preference for Internet service APIs. But while the REST principles, proposed in Roy Fielding's dissertation that defined them, have academic value as a basis for research, a pure REST design is not at present practical for most applications. We are advocating a kind of Pragmatic REST-a design pattern that adopts the beneficial components of RESTful design without requiring strict adherence to academic purity.
+
+### The Richardson Maturity Model
+
+Martin Fowler has referenced1 a structured model of RESTful adoption developed by Leonard Richardson and [explained](http://www.crummy.com/writing/speaking/2008-QCon/act3.html) at a QCon talk. Fowler refers to this as the Richardson Maturity Model of RESTful design.
+
+
+
+Martin Fowler, referencing [Rest in Practice](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829),2 summarizes the genesis of RESTful design:
+
+> use Restful web services to handle many of the integration problems that enterprises face. At its heart . . . is the notion that the web is an existence proof of a massively scalable distributed system that works really well, and we can take ideas from that to build integrated systems more easily.
+
+A pragmatic approach to RESTful design uses the best parts of Fielding's conceptual framework to allow developers and integrators to understand what they can do with the API as rapidly as possible and without writing extraneous code.
+
+At its most fundamental, a RESTful design is resource-centric and uses HTTP verbs. At its most advanced, a design that follows pure academic REST utilizes the HATEOAS principle by implementing Hypermedia Controls. We are advocating a Level 2 RESTful design for Mojaloop.
+
+### Why not Hypermedia Controls?
+
+Although HATEOAS is a fascinating principle-it advocates that a server should respond to each client action with a list of all possible actions that can lead the client to its next application state. And further, clients _must not_ rely on out of band information \(like a written API spec\) for what actions can be performed on which resources or on the format of URIs.
+
+It is this final proscription that fails the test of Pragmatic REST: While HATEOAS is an interesting theoretical approach to limit coupling, it does not easily apply to Mojaloop \(or any other contract API design\). When we take into account our audience for the interconnect APIs, we find a group of commercial entities that will be operating under a set of highly specific scheme rules. Interactions between the participants, and between participant and central service hub, will be highly specified to assign acceptable commercial risk that can be priced at very low cost to end-users. This requires _ex-ante_ predictability of the API which is anathema to the HATEOAS principle defined by Fielding.
+
+### Pragmatic RESTful Principles
+
+#### URIs Define Resources
+
+A well-designed URI pattern makes an API easy to consume, discover, and extend, just as a carefully designed API does in a traditional programming language. Pure REST disdains this principle in favor of HATEOAS. But pragmatic REST follows a normal pattern for URI definitions to improve human understanding, even if HATEOAS principles are employed for discovery.
+
+URI paths that refer to a collection of objects should consist of a plural noun, e.g. /customers, to refer to a set of customers. When a collection can have only one instance, the singular noun should be used to avoid confusion. E.g. GET /transfers/:id/fulfillment is correct, since there is only one fulfillment object per identified transfer.
+
+URI paths that refer to a single object should consist of a plural noun \(representing the collection\), followed by a predefined unique identifier. E.g., /customers/123456 to refer to the specific customer with number 123456. The identifier must be unique within the containing collection and persist for the life of the object within that collection. IDs must not be ordinal values-ordinal retrieval of objects from a collection is possible using query parameters on the collection URI.
+
+URI paths may have a prefix to identify the environment, version, or other context of the resource. Nothing should follow the identifying path but collections and object references.
+
+URI path and query segment identifiers should be chosen from the Roman character set, \[0-9A-Za-z\]. Use _camelCase_ to define the elements of the URI path. Do not use snake\_case.
+
+For the avoidance of doubt, "\_" \(underscore\) and "-" \(hyphen\) should not be used in URI path or query segment identifiers.
+
+This probably seems a bit parochial. The purpose is to find a well-defined URI format that is consistent with wide-spread practice, easy to define, predictable, and that maps to native environments and conventions. It isn't going to satisfy everyone. Here is reasoning behind this constraint:
+
+CapitalCase and camelCase are the defacto standard for NodeJS and JavaScript and are a common constraint in URI definition: URI path segments are often mapped to JS internal resources and so conforming to JS naming conventions makes sense.
+
+Field names in JSON and SQL should also follow this convention since they are often automatically mapped into variable name space and can be referenced in URIs as path or query segment identifiers.
+
+We should also avoid the use of "$" unless it is required by a library \(e.g. JQuery\). IBM JCL has passed away; let it rest in peace. There are better scope control tools to separate name spaces than introducing non-roman symbols.
+
+We should avoid "-" \(hyphen\) in path segment and query parameter names as it does not map into variable names, SQL, or JSON field name identifiers.
+
+Underscore characters must be escaped in markdown source by prefixing each with a "\" character.
+
+Snake\_case has been reported to be slightly easier to read than camelCase in variable names, but it actually does not improve readability of URIs, as it visually interferes with path and query segment delimiters making it difficult to visually parse them. And when URIs are underlined in presentation, the underscores become illegible.
+
+#### URI Parameters
+
+Use a standard and predictable set of optional parameters in a consistent way.
+
+A set of standard query parameters should be used for collections to enable caller control over how much of the collection they see. E.g. "count" to determine how many objects to return, "start" to determine where to start counting in the result set, and "q" as a generic free-form search query. We will define the standard set of parameters as we go and will apply them consistently.
+
+#### Verbs
+
+Singular objects should support GET for read, PUT for complete replacement \(or creation when the primary key is specified by the client and is persistent, e.g. a payment card PAN\), and DELETE for delete.
+
+Collections should support GET to read back the whole or part of a collection, and POST to add a new object to the collection.
+
+Singular objects may support POST as a way to change their state in specified ways. Posting a JSON document to a singular object URI may allow selected field values to be updated or trigger a state change or action without replacing the whole object.
+
+GET must be implemented in a _nullipotent_ manner-that is, GET never causes side effects and never modifies client-visible system state \(other than logging events or updating instrumentation, e.g.\).
+
+PUT and DELETE must be implemented in an _idempotent_ manner-that is, changes are applied consistently to the system data in a way that is dependent only on the state of the resource and inputs but on nothing else. The action has no additional effect if it is executed more than once with the same input parameters and does not depend on the order of other operations on a containing collection or other resources held in the collection. For example, removing a resource from a collection can be considered an idempotent operation on the collection. Using PUT to fully replace \(or create\) a uniquely identified resource when the URI is fully known to the client is also idempotent. This implies that the system may reorder operations to improve efficiency, and the client does not need to know whether a resource exists before attempting to replace it.
+
+POST and PATCH3 are not idempotent operations. POST is used to create new resources where the resource identifier is assigned by the server or where a single identified internal resource is implied by the target URI \(e.g. POST /transfers, but PUT /transfers/:id/fulfillment\).
+
+#### Data Format
+
+We favor [JSON](http://json.org/)4 related data formats over XML. In some cases, data formats will be binary or XML, as defined by pre-existing standards, and these will be precisely specified. Binary formats should have a formal syntax to avoid ambiguous representational translations \(e.g. character set translations, big- or little-endian representations of numeric values, etc\).
+
+Date and time values used in APIs should comply to the ISO 8601 standard, and further profiled by the w3c Note on Date and Time Formats.5 This w3c note should lead to the reduction in complexity and error scope of communicating components that must exchange tangible dates and times. There will be cases where we use non-ISO format date or time as required by an external standard, e.g. ISO 7813 expiry dates.
+
+Existing standard XML formats should have an XSD schema for the acceptable subset profile used within the project. For particularly complex data formats, we may use a common format profile translator to map between our project subset of the standard format and the wire format used by a standardized protocol \(e.g.\). This will limit coupling to complex formats in a more maintainable way.
+
+When specifying the PATCH action for a resource, we will use a consistent patch document format \(e.g. [JSON Patch](http://jsonpatch.com/)6\).
+
+#### Return Codes
+
+Use HTTP return codes in a consistent way and according to their standard definitions. The standard codes are defined in RFC 2616.7
+
+#### Machine Readable Error Format
+
+The API should provide a machine readable error result in a well-defined JSON format. {TBD whether to use a response envelope and how to format errors, faults, and success envelopes. RESTful design relies on headers to carry protocol-defined errors, debug info can also be carried in headers. We should be clear on why we are using an envelope and how this supports normal production communication between client and server.
+
+#### Versioning
+
+API URIs should include a version identifier in the format v_M_ as a leading path element \(where _"M"_ is the Major component of the multi-part version number\). The API and its version identifier element must conform to the [semantic versioning](http://semver.org/)8 2.0 specification for API versioning.
+
+A client must specify the Major version number in each request. It is not possible for a client to express a requirement for a specific minor version.
+
+The full API version number is specified in the response header \(TBD\) for all successful and error responses.
+
+While an API version contract will be influenced by Major, minor, _and_ patch levels, only the Major version number is a production API binding element-that is, a production client cannot request a particular minor version or patch level and a production server will not accept a URI request that specifies these extra elements.
+
+However, in pre-production environments, it is anticipated that some combination of minor, patch, pre-release, and metadata suffixes would be supported in client requests \(as defined in _semver_ \[3\]\) and _may_ be expressed in _pre-production_ URIs to assist with development and integration scenarios.
+
+### We May Need to Give REST a Rest
+
+As we design the interconnection APIs between components and between participating systems, we may find API requirements that don't precisely match the Pragmatic REST pattern defined here. We will evaluate these case-by-case and make the best choice to support the project goals.
+
+### Non-Functional Requirements
+
+As we develop the APIs, we will make consistent choices about non-functional requirements to reinforce the project goals.
+
+1: [http://martinfowler.com/articles/richardsonMaturityModel.html](Richardson%20Maturity%20Model), retrieved August 18, 2016.
+
+2: [https://www.amazon.com/gp/product/0596805829](https://www.amazon.com/gp/product/0596805829?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0596805829), retrieved August 18, 2016.
+
+3: RFC 5789, _PATCH Method for HTTP_, [https://tools.ietf.org/html/rfc5789](https://tools.ietf.org/html/rfc5789), retrieved August 18, 2016.
+
+4: _Introducing JSON_, [http://json.org/](http://json.org/), retrieved August 18, 2016.
+
+5: [http://www.w3.org/TR/1998/NOTE-datetime-19980827](http://www.w3.org/TR/1998/NOTE-datetime-19980827), retrieved August 22, 2016.
+
+6: _JSON Patch_, [http://jsonpatch.com/](http://jsonpatch.com/), retrieved August 18, 2016.
+
+7: [https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
+
+8: _Semantic Versioning 2.0.0_, [http://semver.org/](http://semver.org/), retrieved August 18, 2016.
+
description: Mojaloop Contributors Guide
### \* Review the [Mojaloop Deployment](mojaloop-deployment.md#mojaloop-deployment) Guide
-### \* Review [Standards](standards.md) on contributing to our Open Source Project
+### \* Get familiar with our [Standards](standards.md) on contributing to this project
-### \* Review the [Roadmap](../mojaloop-roadmap.md) and look for issues in the project repository requesting contributor Help.
+### \* View the project board and work on your first [Issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
+
+### \* Review the [Roadmap](../mojaloop-roadmap.md) and contribute to future opportunities
## What work is needed?
-Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
+Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with "[good first issue](https://github.com/mojaloop/project/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)". In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
There's a [roadmap](../mojaloop-roadmap.md) that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
+
+
+Mojaloop AdapterMojaloop AdapterLedgerLedgerMojaloopAdapter[Not supported by viewer]C 1. TransferC 1. Transferrequest_to_preparerequest_to_prepareC 1.2[Not supported by viewer]C 1.3[Not supported by viewer]prepared.notificationprepared.notificationC 1.4C 1.4fulfiled.notificationfulfiled.notificationrequest_to_fulfilrequest_to_fulfilFulfil TransferFulfil TransferC 1.8C 1.8C 1.9[Not supported by viewer]C 1.10[Not supported by viewer]C 1.11C 1.11C 1.12 Fulfil NotifyC 1.12 Fulfil NotifyC 1.1C 1.1C 1.5C 1.5DBDBCentral Services[Not supported by viewer]positionspositionsDirectory(Participant Lookup)[Not supported by viewer]PathfinderPathfinderFSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]A 2. MSISDN based lookupA 2. MSISDN <br>based lookupDBDB Database DatabaseFSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]AAA 1. User LookupA 1. User LookupA 3. Receiver DetailsA 3. Receiver DetailsBBMerchant Registry[Not supported by viewer]A 2. mID based lookupA 2. mID based lookupB 1. QuoteB 1. QuoteMojaloop Hub[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]LedgerLedger<br>LedgerLedger<br>CCkafkakafkakafkakafkakafkakafkakafkakafkakafkakafkaC 1.6PrepareTransfer[Not supported by viewer]C 1.7C 1.7C 1.11C 1.11C 1.12C 1.12Fulfil NotifyFulfil NotifyC 1.13Fulfil Notify[Not supported by viewer]B 2. Fee /Commission[Not supported by viewer]A 4. Get receiver details[Not supported by viewer]B 1. QuoteB 1. QuoteD 6.D 6.SettlementsSettlementsD 5. Update Positions[Not supported by viewer]settlement.notificationssettlement.notificationsScheme Settlement Processor<span>Scheme Settlement Processor</span><br>Hub OperatorHub OperatorD 1. Create Settlement[Not supported by viewer]DDD 2. Query SettlementReport(Pull)[Not supported by viewer]D 4. SendAcks(Push)[Not supported by viewer]SettlementBankSettlement<br>Bank<br>D 3. Process Settlements[Not supported by viewer]Bank[Not supported by viewer]D 7. Position Notifications Change resultD 7. Position Notifications Change resultD 7. Settlement NotificationD 7. Settlement Notification
\ No newline at end of file
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
Our model addresses these issues in several key ways:
+
+
+Mojaloop AdapterMojaloop AdapterLedgerLedgerMojaloopAdapter[Not supported by viewer]C 1. TransferC 1. Transferrequest_to_preparerequest_to_prepareC 1.2[Not supported by viewer]C 1.3[Not supported by viewer]prepared.notificationprepared.notificationC 1.4C 1.4fulfiled.notificationfulfiled.notificationrequest_to_fulfilrequest_to_fulfilFulfil TransferFulfil TransferC 1.8C 1.8C 1.9[Not supported by viewer]C 1.10[Not supported by viewer]C 1.11C 1.11C 1.12 Fulfil NotifyC 1.12 Fulfil NotifyC 1.1C 1.1C 1.5C 1.5DBDBCentral Services[Not supported by viewer]positionspositionsDirectory(Participant Lookup)[Not supported by viewer]PathfinderPathfinderFSPBackend(Does not natively speak Mojaloop API)[Not supported by viewer]Scheme-Adapter(Converts from Mojaloop API to backend FSP API)[Not supported by viewer]A 2. MSISDN based lookupA 2. MSISDN <br>based lookupDBDB Database DatabaseFSPBackend (Natively speaks Mojaloop API)[Not supported by viewer]AAA 1. User LookupA 1. User LookupA 3. Receiver DetailsA 3. Receiver DetailsBBMerchant Registry[Not supported by viewer]A 2. mID based lookupA 2. mID based lookupB 1. QuoteB 1. QuoteMojaloop Hub[Not supported by viewer]Payer FSP[Not supported by viewer]Payee FSP[Not supported by viewer]LedgerLedger<br>LedgerLedger<br>CCkafkakafkakafkakafkakafkakafkakafkakafkakafkakafkaC 1.6PrepareTransfer[Not supported by viewer]C 1.7C 1.7C 1.11C 1.11C 1.12C 1.12Fulfil NotifyFulfil NotifyC 1.13Fulfil Notify[Not supported by viewer]B 2. Fee /Commission[Not supported by viewer]A 4. Get receiver details[Not supported by viewer]B 1. QuoteB 1. QuoteD 6.D 6.SettlementsSettlementsD 5. Update Positions[Not supported by viewer]settlement.notificationssettlement.notificationsScheme Settlement Processor<span>Scheme Settlement Processor</span><br>Hub OperatorHub OperatorD 1. Create Settlement[Not supported by viewer]DDD 2. Query SettlementReport(Pull)[Not supported by viewer]D 4. SendAcks(Push)[Not supported by viewer]SettlementBankSettlement<br>Bank<br>D 3. Process Settlements[Not supported by viewer]Bank[Not supported by viewer]D 7. Position Notifications Change resultD 7. Position Notifications Change resultD 7. Settlement NotificationD 7. Settlement Notification
\ No newline at end of file
Mojaloop is open source software for creating digital payments platforms that co
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
-
-[Mojaloop Basic Overview](https://github.com/mojaloop/documentation/tree/f7e2e66bff941a55db9ceaab6d42e59512918cfd/Diagrams/ArchitectureDiagrams/Basic%20Overview.png)
+
Our model addresses these issues in several key ways:
+
+
+Core Ledger LogicCore Ledger LogicMLAPI[Not supported by viewer]MLAPI[Not supported by viewer]ML SenderML SenderML ReceiverML Receiver/transfer/transfer201201request_to_preparerequest_to_prepare1.4/2.3[Not supported by viewer]1.5/2.4[Not supported by viewer]prepared.notificationprepared.notification1.61.6/transfer/transfer2.52.5ILPAPI[Not supported by viewer]ILP Receiver ConnectorILP Receiver Connectorweb socketweb socketfulfilled.notificationfulfilled.notificationrequest_to_fulfillrequest_to_fulfill/transfer/fulfill/transfer/fulfill1.91.91.10/2.9[Not supported by viewer]1.11/2.10[Not supported by viewer]ILPAPI[Not supported by viewer]ILP Sender ConnectorILP Sender Connector1.121.122.112.11/transfer/fulfill/transfer/fulfill1.11.11.21.21.31.31.71.71.81.81.131.13/payment/payment2.12.12.22.22.62.6/payment/fulfill/payment/fulfill2.72.72.82.8web socketweb socket2.122.12DBDBCentral - Ledger<font style="font-size: 18px">Central - Ledger</font>positionspositions
\ No newline at end of file
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
- * [Central-Ledger](mojaloop-technical-overview/central-ledger.md)
+ * [Central-Ledger Services](mojaloop-technical-overview/central-ledger.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
* [Repo Details](repositories/README.md)
* [helm](repositories/helm.md)
-# Central-Ledger
+# Central-Ledger Services
The central ledger is a series of services that facilitate clearing and settlement of transfers between DFSPs, including the following functions:
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
* [Repo Details](repositories/README.md)
* [helm](repositories/helm.md)
+ * [project](repositories/project.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
+# project
+
+## Overview
+
+The [project repository](https://github.com/mojaloop/project) is the central repository to track product development issues for the Mojaloop project.
+
+* All work is tracked in GitHub and assigned to specific milestones.
+* To review open work items go to: [https://github.com/mojaloop/project/issues](https://github.com/mojaloop/project/issues)
+* To jump and get started, review any stories that are tagged with "[good first issue](https://github.com/mojaloop/project/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)"
+* To file a new bug or feature request, follow the templates below.
+* We also use "Zenhub" a GitHub plug-in to visualize the stories and associated swim lanes.
+
+## Bug Template
+
+**Summary**:
+
+**Severity**: \(Low, Medium, High\)
+
+**Priority**: \(Critical, Medium, Low\)
+
+**Expected Behavior**
+
+**Steps to Reproduce** 1. 2. 3.
+
+**Specifications**
+
+* Component \(if known\):
+* Version:
+* Platform:
+* Subsystem:
+* Type of testing:
+* Bug found/raised by:
+
+**Notes**:
+
+* Severity when opened:
+* Priority when opened:
+
+## Feature Template
+
+### **Goal**:
+
+As a I want to so that
+
+**Tasks**:
+
+* [ ] TBD \[ @? \]
+
+**Acceptance Criteria**:
+
+* [ ] Designs are up-to date
+* [ ] Unit Tests pass
+* [ ] Integration Tests pass
+* [ ] Code Style & Coverage meets standards
+* [ ] Changes made to config \(default.json\) are broadcast to team and follow-up tasks added to update helm charts and other deployment config.
+* [ ] TBD
+
+### **Pull Requests**:
+
+* [ ] TBD
+
+### **Follow-up**:
+
+* N/A
+
+**Dependencies**:
+
+* N/A
+
+### **Accountability**:
+
+* Owner: TBC
+* QA/Review: TBC
+
+
+
* [Core Scenarios](mojaloop-background/core-scenarios.md)
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
- * [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
+ * [Mojaloop Hub](mojaloop-technical-overview/mojaloop-components.md)
* [Central-Ledger](mojaloop-technical-overview/central-ledger.md)
* [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
* [Repo Details](repositories/README.md)
-# Mojaloop Components
+# Mojaloop Hub
-There are several components that make up the Mojaloop ecosystem. The Mojaloop Hub is the primary container used to house the core Mojaloop components.
+There are several components that make up the Mojaloop ecosystem. The Mojaloop Hub is the primary container and reference we use to describe the core Mojaloop components.

* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
* [Central-Ledger](mojaloop-technical-overview/central-ledger.md)
+ * [Central-Settlements Service](mojaloop-technical-overview/central-settlements-service.md)
* [Repo Details](repositories/README.md)
* [helm](repositories/helm.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
+# Central-Settlements Service
+
+The Central Settlements service is part of the Mojaloop project and deployment.
+
+* The central settlements service exposes Settlement API to manage the settlements between FSPs and the Central Hub.
+* The service manages Settlement Windows and Settlements Event Triggers and provides information about FSPs accounts and settlements.
+
+
+
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
+ * [Central-Ledger](mojaloop-technical-overview/central-ledger.md)
* [Repo Details](repositories/README.md)
* [helm](repositories/helm.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
+# Central-Ledger
+
+The central ledger is a series of services that facilitate clearing and settlement of transfers between DFSPs, including the following functions:
+
+* Brokering real-time messaging for funds clearing
+* Maintaining net positions for a deferred net settlement
+* Propagating scheme-level and off-transfer fees
+
+
+
# Mojaloop Components
+There are several components that make up the Mojaloop ecosystem. The Mojaloop Hub is the primary container used to house the core Mojaloop components.
+
+
+
+These consist of:
+
+* The Central Services provide the set of interfaces required to move money from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. The Central Services contains the core Central Ledger logic to move money but also will be extended to provide fraud management and enforce scheme rules.
+* The Directory Gateway provides a look-up account service and routes each payment to the correct service/provider in the ecosystem. This system leverages Pathfinder and a Merchant Registry to find this information.
+* The Mojaloop API's provide the standard set of interfaces a DFSP can implement to connect to the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
+
+On either side of the Mojaloop Hub there is sample open source code to show how a DFSP can send and receive payments and the client that an existing DFSP could host to connect to the network.
+
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubeInfrastructureArch.png)
The tool set to be deployed as part of the deployment process.
Postman
Required
- Postman is a Google Chrome application for the interacting with HTTP API's.
+ Postman is a Google Chrome application for the interacting with HTTP API's.
It presents you with a friendly GUI for the construction requests and reading
responces.
[https://www.getpostman.com/apps](https://www.getpostman.com/apps)
## Mojaloop Services
-The following architecture diagram shows the Mojaloop services: 
+The following architecture diagram shows the Mojaloop services:
+
+
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
Mojaloop is open source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.
-The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
+The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
-
+
-[Mojaloop Basic Overview](/Diagrams/ArchitectureDiagrams/Basic%20Overview.png)
+[Mojaloop Basic Overview](https://github.com/mojaloop/documentation/tree/f7e2e66bff941a55db9ceaab6d42e59512918cfd/Diagrams/ArchitectureDiagrams/Basic%20Overview.png)
Our model addresses these issues in several key ways:
+
* A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
The intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
-
-
This provides environment resource recommendations with a view of the infrastruc
#### 1.2 Local Deployment and Testing Tools
### 1.2 Local Deployment and Testing Tools
+
The tool set to be deployed as part of the deployment process.
-|Tool|Required/Optional|Description|Install Info|
-|---|---|---|---|
-|Docker|Required|Docker Engine and CLI ClientLocal Kubernetes single node cluster|[https://docs.docker.com/install](https://docs.docker.com/install)|
-|Kubectl|Required|Kubernetes CLI for Kubernetes ManagementNote Docker installs this part of Kubernetes install|[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)Docker Kubernetes Install (as per this guide)Mac: `brew install kubernetes-cli`Ubuntu: `sudo snap install kubectl --classic`|
-|Kubectx|Optional(useful tool)|Kubernetes CLI for Kubernetes Context Management HelperNote Docker installs this as part of Kubernetes install|[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)Mac: `brew install kubectx`Ubuntu: `sudo apt install kubectx`|
-|Kubetail|Optional(useful tool)|Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running `kubectl logs -f` but for multiple pods.Example usage `kubetail moja.* -n demo`|https://github.com/johanhaleby/kubetail|
-|Helm|Required|Helm helps you manage Kubernetes applicationsHelm charts help you define, install and upgrade even the most complex Kubernetes application|[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)Mac: `brew install kubernetes-helm`Ubuntu: `sudo snap install helm --classic`|
-|Postman|Required|Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.|[https://www.getpostman.com/apps](https://www.getpostman.com/apps)|
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Install Info
+
+
+
+
+ Docker
+ Required
+
+ Docker Engine and CLI Client
+ Local Kubernetes single node cluster
+
+ [https://docs.docker.com/install](https://docs.docker.com/install)
+
+
+ Kubectl
+ Required
+
+ Kubernetes CLI for Kubernetes Management
+ Note Docker installs this part of Kubernetes install
+
+
+ [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)
+ Docker Kubernetes Install (as per this guide)
+ Mac: `brew install kubernetes-cli`
+ Ubuntu: `sudo snap install kubectl --classic`
+
+
+
+ Kubectx
+ Optional(useful tool)
+
+ Kubernetes CLI for Kubernetes Context Management Helper
+ Note Docker installs this as part of Kubernetes install
+
+
+ [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
+ Mac: `brew install kubectx`
+ Ubuntu: `sudo apt install kubectx`
+
+
+
+ Kubetail
+ Optional(useful tool)
+
+ Bash script that enables you to aggregate (tail/follow) logs from multiple
+ pods into one stream. This is the same as running `kubectl logs -f` but
+ for multiple pods.
+ Example usage `kubetail moja.* -n demo`
+
+ https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+
+ Helm helps you manage Kubernetes applications
+ Helm charts help you define, install and upgrade even the most complex
+ Kubernetes application
+
+
+ [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
+ Mac: `brew install kubernetes-helm`
+ Ubuntu: `sudo snap install helm --classic`
+
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's.
+ It presents you with a friendly GUI for the construction requests and reading
+ responces.
+ [https://www.getpostman.com/apps](https://www.getpostman.com/apps)
+
+
+## 2 Deployment
-## 2 Deployment
This section will guide the reader through the deployment process to setup Kubernetes within Docker.
### 2.1 Kubernetes
+
If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
-

[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
-
- 
+
[kubernetes-dashboard](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/kubernetesDashboard.png)
or
### 2.2 Helm
-Please review [Mojaloop Helm Chart](/helm/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
-
+Please review [Mojaloop Helm Chart](../repositories/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
**2.2.1 Helm Chart Installation**
-The purpose of this document is to provide;
+The purpose of this document is to provide the following:
- an overview of the current helm charts,
- the hierarchy relationship between the charts,
- the hierarchy of values.
or
Please review [Mojaloop Helm Chart](/helm/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
+
**2.2.1 Helm Chart Installation**
This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
Mojaloop is open source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.
-The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
+The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks.
+
+
+[Mojaloop Basic Overview](/Diagrams/ArchitectureDiagrams/Basic%20Overview.png)
+
+Our model addresses these issues in several key ways:
* A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
-
The intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
The basic idea behind Mojaloop is that we need to connect multiple Digital Finan
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-diagram here.
+
The intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
The purpose of this document is to provide;
Helm chart Repo: http://mojaloop.io/helm/repo
+The purpose of this document is to provide;
+- an overview of the current helm charts,
+- the hierarchy relationship between the charts,
+- the hierarchy of values.
+
+#### Helm Chart Overview
+Helm chart Repo: http://mojaloop.io/helm/repo
or
### 2.2 Helm
-Please review [Mojaloop Helm Chart](../helm/helm Readme.md) to understand the relationships between the deployed Mojaloop helm charts.
+Please review [Mojaloop Helm Chart](/helm/helm.md) to understand the relationships between the deployed Mojaloop helm charts.
**2.2.1 Helm Chart Installation**
+The purpose of this document is to provide;
+- an overview of the current helm charts,
+- the hierarchy relationship between the charts,
+- the hierarchy of values.
+
+#### Helm Chart Overview
+Helm chart Repo: http://mojaloop.io/helm/repo
or
### 2.2 Helm
-Please review [Mojaloop Helm Chart](../helm/Readme.md) to understand the relationships between the deployed Mojaloop helm charts.
+Please review [Mojaloop Helm Chart](../helm/helm Readme.md) to understand the relationships between the deployed Mojaloop helm charts.
**2.2.1 Helm Chart Installation**
This provides environment resource recommendations with a view of the infrastruc
#### 1.2 Local Deployment and Testing Tools
### 1.2 Local Deployment and Testing Tools
-
The tool set to be deployed as part of the deployment process.
-| Tool | Required/Optional | Description | Install Info |
-| :--- | :--- | :--- | :--- |
-
-
-
-
-
- Docker
- Required
-
- Docker Engine and CLI Client
- Local Kubernetes single node cluster
-
- [https://docs.docker.com/install](https://docs.docker.com/install)
-
-
-
-
-
-
- Kubectl
- Required
-
- Kubernetes CLI for Kubernetes Management
- Note Docker installs this part of Kubernetes install
-
-
- [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)
- Docker Kubernetes Install (as per this guide)
- Mac: `brew install kubernetes-cli`
- Ubuntu: `sudo snap install kubectl --classic`
-
-
-
-
-
-
-
- Kubectx
- Optional(useful tool)
-
- Kubernetes CLI for Kubernetes Context Management Helper
- Note Docker installs this as part of Kubernetes install
-
-
- [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
- Mac: `brew install kubectx`
- Ubuntu: `sudo apt install kubectx`
-
-
-
-
-
-
-
- Kubetail
- Optional(useful tool)
-
- Bash script that enables you to aggregate (tail/follow) logs from multiple
- pods into one stream. This is the same as running `kubectl logs -f` but
- for multiple pods.
- Example usage `kubetail moja.* -n demo`
-
- https://github.com/johanhaleby/kubetail
-
-
-
-
-
-
- Helm
- Required
-
- Helm helps you manage Kubernetes applications
- Helm charts help you define, install and upgrade even the most complex
- Kubernetes application
-
-
- [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
- Mac: `brew install kubernetes-helm`
- Ubuntu: `sudo snap install helm --classic`
-
-
-
-
-| Postman | Required | Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces. | \[https://www.getpostman.com/apps\]\(https://www.getpostman.com/apps\) |
-| :--- | :--- | :--- | :--- |
-
+|Tool|Required/Optional|Description|Install Info|
+|---|---|---|---|
+|Docker|Required|Docker Engine and CLI ClientLocal Kubernetes single node cluster|[https://docs.docker.com/install](https://docs.docker.com/install)|
+|Kubectl|Required|Kubernetes CLI for Kubernetes ManagementNote Docker installs this part of Kubernetes install|[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)Docker Kubernetes Install (as per this guide)Mac: `brew install kubernetes-cli`Ubuntu: `sudo snap install kubectl --classic`|
+|Kubectx|Optional(useful tool)|Kubernetes CLI for Kubernetes Context Management HelperNote Docker installs this as part of Kubernetes install|[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)Mac: `brew install kubectx`Ubuntu: `sudo apt install kubectx`|
+|Kubetail|Optional(useful tool)|Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running `kubectl logs -f` but for multiple pods.Example usage `kubetail moja.* -n demo`|https://github.com/johanhaleby/kubetail|
+|Helm|Required|Helm helps you manage Kubernetes applicationsHelm charts help you define, install and upgrade even the most complex Kubernetes application|[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)Mac: `brew install kubernetes-helm`Ubuntu: `sudo snap install helm --classic`|
+|Postman|Required|Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.|[https://www.getpostman.com/apps](https://www.getpostman.com/apps)|
+## 2 Deployment
This section will guide the reader through the deployment process to setup Kubernetes within Docker.
### 2.1 Kubernetes
-
If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
or
### 2.2 Helm
-Please review [Mojaloop Helm Chart](https://github.com/mojaloop/documentation/tree/3511973fa37b3329321cdcbe97c0f27b78b0c8b8/Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
+Please review [Mojaloop Helm Chart](../helm/Readme.md) to understand the relationships between the deployed Mojaloop helm charts.
**2.2.1 Helm Chart Installation**
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
-* [Repositories](repositories.md)
- * [helm](helm/readme.md)
+* [Repo Details](repositories/README.md)
+ * [helm](repositories/helm.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
description: Repository overview
---
-# Repositories
+# Repo Details
The Mojaloop project is organized on the basis of component microservices. As such, there are over twenty different repositories in GitHub that align to the different services. The following four repositories are pinned to the project:
+# helm
+
+The purpose of this document is to provide;
+
+* an overview of the current helm charts,
+* the hierarchy relationship between the charts,
+* the hierarchy of values.
+
+## Helm Chart Overview
+
+Helm chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo) <- Helm repo to be added to config Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm) <- Location for source and values.yaml\(configs\)
+
+
+
+[Mojaloop Helm - Chart Overview](https://github.com/mojaloop/documentation/tree/840f40c8a94b4c7ded4569f07dea313d164b6980/Diagrams/helm/HelmChartOverview.png)
+
+## Helm Hierarchy Relationship
+
+!\[Mojaloop Helm - Hierarchy Relationship\]../Diagrams/helm/HelmHierarchyRelationship.png\)
+
+[Mojaloop Helm - Hierarchy Relationship](https://github.com/mojaloop/documentation/tree/840f40c8a94b4c7ded4569f07dea313d164b6980/Diagrams/helm/HelmHierarchyRelationship.svg)
+
+## Helm Hierarchy of Values
+
+
+
+[Mojaloop Helm - Hierarchy of Values](https://github.com/mojaloop/documentation/tree/840f40c8a94b4c7ded4569f07dea313d164b6980/Diagrams/helm/HelmHierarchyValues.png)
+
The purpose of this document is to provide;
Helm chart Repo: http://mojaloop.io/helm/repo
The purpose of this document is to provide;
Helm chart Repo: http://mojaloop.io/helm/repo
+# Mojaloop Helm Repo
+
+The purpose of this document is to provide;
+- an overview of the current helm charts,
+- the hierarchy relationship between the charts,
+- the hierarchy of values.
+
+#### Helm Chart Overview
+Helm chart Repo: http://mojaloop.io/helm/repo
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
* [Repositories](repositories.md)
+ * [helm](helm/readme.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
The basic idea behind Mojaloop is that we need to connect multiple Digital Finan
* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
+diagram here.
+
The intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
# Table of contents
* [Mojaloop Overview](README.md)
-* [Untitled](untitled.md)
* [Contributors Guide](contributors-guide/README.md)
* [Mojaloop Deployment](contributors-guide/mojaloop-deployment.md)
* [Standards](contributors-guide/standards.md)
* [Mojaloop Overview](README.md)
* [Untitled](untitled.md)
* [Contributors Guide](contributors-guide/README.md)
- * [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
- * [Mojaloop Helm Chart](contributors-guide/mojaloop-deployment/untitled.md)
+ * [Mojaloop Deployment](contributors-guide/mojaloop-deployment.md)
* [Standards](contributors-guide/standards.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
* [Documentation](contributors-guide/documentation.md)
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
-* [Repositories](repositories/README.md)
- * [helm](repositories/helm-chart-repo.md)
+* [Repositories](repositories.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
description: Mojaloop Contributors Guide
## How do I contribute?
-### \* Review the [Mojaloop Deployment](mojaloop-deployment/#mojaloop-deployment) Guide
+### \* Review the [Mojaloop Deployment](mojaloop-deployment.md#mojaloop-deployment) Guide
### \* Review [Standards](standards.md) on contributing to our Open Source Project
+# Mojaloop Deployment
+
+## Deployment and Setup Introduction
+
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+* [Software List](mojaloop-deployment.md#1-software-list)
+ * [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](mojaloop-deployment.md#12-local-deployment-and-testing-tools)
+* [Deployment](mojaloop-deployment.md#2-deployment)
+ * [Kubernetes](mojaloop-deployment.md#21-kubernetes)
+ * [Kubernetes Installation with Docker](mojaloop-deployment.md#211-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](mojaloop-deployment.md#212-kubernetes-environment-setup)
+ * [Helm](mojaloop-deployment.md#22-helm)
+ * [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation)
+ * [Postman](mojaloop-deployment.md#23-postman)
+ * [Installing Postman](mojaloop-deployment.md#231-installing-postman)
+ * [Setup Postman](mojaloop-deployment.md#231-setup-postman)
+* [Errors During Setup](mojaloop-deployment.md#24-errors-on-setup)
+
+## 1 Software List
+
+Before proceeding, please have a look at [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations) to insure the minimum resource requirements are available.
+
+### 1.1 Deployment Recommendations
+
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+**Resources Requirements:**
+
+* Control Plane \(i.e. Master Node\)
+
+ \`\`\`http request
+
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+
+ \`\`\`
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
+
+* ETCd Plane:
+
+ \`\`\`http request
+
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+
+ \`\`\`
+
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
+
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+
+
+[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubeInfrastructureArch.png)
+
+#### 1.2 Local Deployment and Testing Tools
+
+### 1.2 Local Deployment and Testing Tools
+
+The tool set to be deployed as part of the deployment process.
+
+| Tool | Required/Optional | Description | Install Info |
+| :--- | :--- | :--- | :--- |
+
+
+
+
+
+ Docker
+ Required
+
+ Docker Engine and CLI Client
+ Local Kubernetes single node cluster
+
+ [https://docs.docker.com/install](https://docs.docker.com/install)
+
+
+
+
+
+
+ Kubectl
+ Required
+
+ Kubernetes CLI for Kubernetes Management
+ Note Docker installs this part of Kubernetes install
+
+
+ [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)
+ Docker Kubernetes Install (as per this guide)
+ Mac: `brew install kubernetes-cli`
+ Ubuntu: `sudo snap install kubectl --classic`
+
+
+
+
+
+
+
+ Kubectx
+ Optional(useful tool)
+
+ Kubernetes CLI for Kubernetes Context Management Helper
+ Note Docker installs this as part of Kubernetes install
+
+
+ [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
+ Mac: `brew install kubectx`
+ Ubuntu: `sudo apt install kubectx`
+
+
+
+
+
+
+
+ Kubetail
+ Optional(useful tool)
+
+ Bash script that enables you to aggregate (tail/follow) logs from multiple
+ pods into one stream. This is the same as running `kubectl logs -f` but
+ for multiple pods.
+ Example usage `kubetail moja.* -n demo`
+
+ https://github.com/johanhaleby/kubetail
+
+
+
+
+
+
+ Helm
+ Required
+
+ Helm helps you manage Kubernetes applications
+ Helm charts help you define, install and upgrade even the most complex
+ Kubernetes application
+
+
+ [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
+ Mac: `brew install kubernetes-helm`
+ Ubuntu: `sudo snap install helm --classic`
+
+
+
+
+| Postman | Required | Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces. | \[https://www.getpostman.com/apps\]\(https://www.getpostman.com/apps\) |
+| :--- | :--- | :--- | :--- |
+
+
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+### 2.1 Kubernetes
+
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+#### 2.1.1 Kubernetes Installation with Docker
+
+**Ubuntu**
+
+Note - Kubernetes with Docker is currently **not** available on Linux\(Ubuntu\) - please refer to; [https://forums.docker.com/](https://forums.docker.com/t/is-there-a-built-in-kubernetes-in-docker-ce-for-linux/54374)
+
+We recommend installing a minikube local environment by follow the steps below;
+
+With reference to [https://kubernetes.io/docs/tasks/tools/install-minikube/](https://kubernetes.io/docs/tasks/tools/install-minikube/)
+
+* VT-x or AMD-v virtualization must be enabled in your computer’s BIOS. To check this on Linux run the following and verify the output is **non-empty**:
+
+ ```bash
+ egrep --color 'vmx|svm' /proc/cpuinfo
+ ```
+
+* Install a Hypervisor:
+
+ * [KVM](http://www.linux-kvm.org/) - Recommended Linux driver
+
+ or
+
+ * [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
+
+* **kubectl** should already be installed. To verify, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+ If an error is returned, please refer to [Local Deployment and Testing Tools](mojaloop-deployment.md#12-local-deployment-and-testing-tools).
+
+* **minikube** installation
+
+ ```bash
+ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
+ ```
+
+* Start a cluster by running:
+
+ **Note** - if you have install KVM as the Hypervisor, you might need to include `--vm-driver=KVM` in the startup command. The default is to startup with VirtualBox.
+
+ ```bash
+ minikube start
+ ```
+
+ Once successfully started, you can interact with your cluster using kubectl, just like any other Kubernetes cluster.
+
+* Lunching the Minikube Dashboard
+
+ The minikube dashboard can be opened and access via your default browser.
+
+ ```bash
+ minikube dashboard
+ ```
+
+ Continue from the **Config Helm CLI and install Helm Tiller...** section below.
+
+**Mac**
+
+To install Kubernetes with Docker, follow the steps below;
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
+
+
+
+[Kubernetes Install with Docker 1](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-1.png)
+
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
+
+
+
+
+
+[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
+
+#### 2.1.2 Kubernetes environment setup:
+
+The following are all command line executables specifically for **Mac**. 1. List the current Kubernetes context;
+
+```bash
+ kubectl config get-contexts
+```
+
+or
+
+```bash
+ kubectx
+```
+
+1. Change your Contexts;
+
+ ```bash
+ kubectl config use-contexts
+ ```
+
+ or
+
+ ```bash
+ kubectx docker-for-desktop
+ ```
+
+2. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+
+3. Verify Kubernetes Dashboard;
+
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+
+4. Start proxy for local UI in new terminal;
+
+ ```bash
+ kubectl proxy ui
+ ```
+
+5. Open URI in default browser
+
+ ```bash
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+
+ Select **Token**. Generate a token to use there by:
+
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+
+ The token to use is shown on the last line of the output of that command.
+
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+
+
+ 
+
+[kubernetes-dashboard](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/kubernetesDashboard.png)
+
+**Ubuntu** continue from here
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster
+
+ ```bash
+ helm init
+ ```
+
+2. Validate Helm Tiller is up and running
+
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+
+3. Add mojaloop repo to your Helm config \(optional\)
+
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+5. Update helm repositories
+
+ ```bash
+ helm repro update
+ ```
+
+6. Install nginx-ingress for load balancing & external access
+
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+7. Add the following to your /ect/hosts
+
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+8. Test system health in your browser after installation
+
+ ml-api-adapter health test
+
+ \`\`\`http request
+
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+
+ ```text
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+### 2.2 Helm
+
+Please review [Mojaloop Helm Chart](https://github.com/mojaloop/documentation/tree/3511973fa37b3329321cdcbe97c0f27b78b0c8b8/Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+**2.2.1 Helm Chart Installation**
+
+This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
+
+1. Lets start by **listing** the current helm charts deployed
+
+ ```bash
+ helm list
+ ```
+
+2. If you would like to **delete** a deployed helm chart
+
+ ```bash
+ helm del --purge moja
+ ```
+
+ **Note:** for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
+
+3. To **install** Mojaloop chart\(s\)
+
+ **Ubuntu** - It might be required to execute `helm install` and `helm upgrade` under `sudo`.
+
+ To install the full mojaloop project
+
+ ```bash
+ helm install --namespace=demo --name=moja mojaloop/mojaloop
+ ```
+
+ Alternative directly from the repository:
+
+ ```bash
+ helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
+ ```
+
+ **or** install a specific mojaloop chart eg. Central-ledger
+
+ ```bash
+ helm install --namespace=demo --name=moja mojaloop/centralledger
+ ```
+
+ Alternative directly from the repository:
+
+ ```bash
+ helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
+ ```
+
+4. To upgrade Mojaloop chart\(s\)
+
+ Note: 'v5.1.1' is an example value.
+
+ ```bash
+ helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
+ ```
+
+5. To upgrade a specific chart eg. Central-ledger
+
+ ```bash
+ helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
+ ```
+
+### 2.3 Postman
+
+Postman is used to send requests and receive responses.
+
+**2.3.1 Installing Postman**
+
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+Alternatively on **Ubuntu** you may run:
+
+```bash
+wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
+sudo tar -xzf postman.tar.gz -C /opt
+rm postman.tar.gz
+sudo ln -s /opt/Postman/Postman /usr/bin/postman
+```
+
+#### 2.3.1 Setup Postman
+
+* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+* Open **Postman**
+* Click **Import** and then **Import File**
+* Select the _Mojaloop.postman\_collection.json_ file you downloaded
+* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* Click **Import** and then **Import File**
+* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+* In the imported collection, navigate to the _central\_ledger_ directory
+
+### 2.4 Errors On Setup
+
+* \`central-ledger’s server IP address could not be found.
+
+ ERR\_NAME\_NOT\_RESOLVED\`
+
+ Resolved by:
+
+ * Verify that a helm chart\(s\) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation) section to install a chart.
+
+---
+description: Repository overview
+---
+
+# Repositories
+
+The Mojaloop project is organized on the basis of component microservices. As such, there are over twenty different repositories in GitHub that align to the different services. The following four repositories are pinned to the project:
+
+* The [mojaloop repository](https://github.com/mojaloop/mojaloop) contains the master readme file along with the following documents to get started.
+* The [documentation repository](https://github.com/mojaloop/docs) documents the contributors guidelines, overall architecture, component design, message flow, and an overview of Mojaloop.
+* The [project repository](https://github.com/mojaloop/project) is the central repository to track product development issues for the Mojaloop project.
+* The [mojaloop-specificiation](https://github.com/mojaloop/mojaloop-specification) contains the specification document set of the Open API for Financial Service Provider Interoperability.
+
+Individual repositories in the [Mojaloop GitHub organization](https://github.com/mojaloop/) each describe component-specific details including source and APIs.
+
* [Core Scenarios](mojaloop-background/core-scenarios.md)
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
- * [Repositories](mojaloop-technical-overview/repositories/README.md)
- * [Helm Chart Repo](mojaloop-technical-overview/repositories/helm-chart-repo.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
+* [Repositories](repositories/README.md)
+ * [helm](repositories/helm-chart-repo.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
# Table of contents
* [Mojaloop Overview](README.md)
+* [Untitled](untitled.md)
* [Contributors Guide](contributors-guide/README.md)
- * [Mojaloop Deployment](contributors-guide/mojaloop-deployment.md)
+ * [Mojaloop Deployment](contributors-guide/mojaloop-deployment/README.md)
+ * [Mojaloop Helm Chart](contributors-guide/mojaloop-deployment/untitled.md)
* [Standards](contributors-guide/standards.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
* [Documentation](contributors-guide/documentation.md)
* [Core Scenarios](mojaloop-background/core-scenarios.md)
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
- * [Repositories](mojaloop-technical-overview/repositories.md)
+ * [Repositories](mojaloop-technical-overview/repositories/README.md)
+ * [Helm Chart Repo](mojaloop-technical-overview/repositories/helm-chart-repo.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
* [Mojaloop Roadmap](mojaloop-roadmap.md)
description: Mojaloop Contributors Guide
## How do I contribute?
-### \* Review the [Mojaloop Deployment](mojaloop-deployment.md#mojaloop-deployment) Guide
+### \* Review the [Mojaloop Deployment](mojaloop-deployment/#mojaloop-deployment) Guide
### \* Review [Standards](standards.md) on contributing to our Open Source Project
+# Mojaloop Helm Chart
+
+The purpose of this document is to provide;
+
+* an overview of the current helm charts,
+* the hierarchy relationship between the charts,
+* the hierarchy of values.
+
+**Helm Chart Overview**
+
+Helm chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo) <- Helm repo to be added to config Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm) <- Location for source and values.yaml\(configs\)
+
+
+
+[Mojaloop Helm - Chart Overview](../../Wiki/HelmChartOverview.svg)
+
+**Helm Hierarchy Relationship**
+
+
+
+[Mojaloop Helm - Hierarchy Relationship](../../Wiki/HelmHierarchyRelationship.svg)
+
+**Helm Hierarchy of Values**
+
+
+
+[Mojaloop Helm - Hierarchy of Values](../../Wiki/HelmHierarchyValues.png)
+
+# Helm Chart Repo
+
+The purpose of this document is to provide;
+
+* an overview of the current helm charts,
+* the hierarchy relationship between the charts,
+* the hierarchy of values.
+
+**Helm Chart Overview**
+
+Helm chart Repo: [http://mojaloop.io/helm/repo](http://mojaloop.io/helm/repo) <- Helm repo to be added to config Helm Github: [http://github.com/mojaloop/helm](http://github.com/mojaloop/helm) <- Location for source and values.yaml\(configs\)
+
+
+
+[Mojaloop Helm - Chart Overview](../../Wiki/HelmChartOverview.svg)
+
+**Helm Hierarchy Relationship**
+
+
+
+[Mojaloop Helm - Hierarchy Relationship](../../Wiki/HelmHierarchyRelationship.svg)
+
+**Helm Hierarchy of Values**
+
+
+
+[Mojaloop Helm - Hierarchy of Values](../../Wiki/HelmHierarchyValues.png)
+
# Mojaloop Deployment
-
+
## Deployment and Setup Introduction
This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
This provides environment resource recommendations with a view of the infrastruc
* Control Plane \(i.e. Master Node\)
- \`\`\`http request
+ \`\`\`http request
- [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
- \`\`\`
+ \`\`\`
* 3x Master Nodes for future node scaling and HA \(High Availability\)
* ETCd Plane:
- \`\`\`http request
+ \`\`\`http request
- [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
- \`\`\`
+ \`\`\`
* 3x ETCd nodes for HA \(High Availability\)
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
-[Mojaloop Deployment Recommendations - Infrastructure Architecture](../Diagrams/Deployment/KubeInfrastructureArch.png)
+[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubeInfrastructureArch.png)
#### 1.2 Local Deployment and Testing Tools
This provides environment resource recommendations with a view of the infrastruc
The tool set to be deployed as part of the deployment process.
+| Tool | Required/Optional | Description | Install Info |
+| :--- | :--- | :--- | :--- |
+
+
- Tool
- Required/Optional
- Description
- Install Info
-
-
-
-
- Docker
- Required
-
+ Docker
+ Required
+
Docker Engine and CLI Client
Local Kubernetes single node cluster
-
- [https://docs.docker.com/install](https://docs.docker.com/install)
+
+ [https://docs.docker.com/install](https://docs.docker.com/install)
+
+
+
+
- Kubectl
- Required
-
+ Kubectl
+ Required
+
Kubernetes CLI for Kubernetes Management
Note Docker installs this part of Kubernetes install
-
-
+
+
[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)
Docker Kubernetes Install (as per this guide)
Mac: `brew install kubernetes-cli`
Ubuntu: `sudo snap install kubectl --classic`
-
+
+
+
+
+
- Kubectx
- Optional(useful tool)
-
+ Kubectx
+ Optional(useful tool)
+
Kubernetes CLI for Kubernetes Context Management Helper
Note Docker installs this as part of Kubernetes install
-
-
+
+
[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
Mac: `brew install kubectx`
Ubuntu: `sudo apt install kubectx`
-
+
+
+
+
+
- Kubetail
- Optional(useful tool)
-
+ Kubetail
+ Optional(useful tool)
+
Bash script that enables you to aggregate (tail/follow) logs from multiple
pods into one stream. This is the same as running `kubectl logs -f` but
for multiple pods.
Example usage `kubetail moja.* -n demo`
-
- https://github.com/johanhaleby/kubetail
+
+ https://github.com/johanhaleby/kubetail
+
+
+
+
- Helm
- Required
-
+ Helm
+ Required
+
Helm helps you manage Kubernetes applications
Helm charts help you define, install and upgrade even the most complex
Kubernetes application
-
-
+
+
[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
Mac: `brew install kubernetes-helm`
Ubuntu: `sudo snap install helm --classic`
-
-
-
- Postman
- Required
- Postman is a Google Chrome application for the interacting with HTTP API's.
- It presents you with a friendly GUI for the construction requests and reading
- responces.
- [https://www.getpostman.com/apps](https://www.getpostman.com/apps)
+
-
-## 2 Deployment
+
+
+| Postman | Required | Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces. | \[https://www.getpostman.com/apps\]\(https://www.getpostman.com/apps\) |
+| :--- | :--- | :--- | :--- |
+
This section will guide the reader through the deployment process to setup Kubernetes within Docker.
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
-
+
[Kubernetes Install with Docker 1](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-1.png)
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
-[Kubernetes Install with Docker 2](../Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
+
+
+
+
+[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
#### 2.1.2 Kubernetes environment setup:
or
kubectx
```
-1. Change your Contexts;
+1. Change your Contexts;
```bash
kubectl config use-contexts
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
- 
- [kubernetes-dashboard](../Diagrams/Deployment/kubernetesDashboard.png)
+
+
+ 
- **Ubuntu** continue from here
+[kubernetes-dashboard](https://github.com/mojaloop/documentation/tree/d1718f81b0f12a4ae17be49f59c17f072956dea5/Diagrams/Deployment/kubernetesDashboard.png)
-6. Config Helm CLI and install Helm Tiller on K8s cluster
+**Ubuntu** continue from here
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster
```bash
helm init
```
-7. Validate Helm Tiller is up and running
+2. Validate Helm Tiller is up and running
```bash
kubectl -n kube-system get po | grep tiller
```
-8. Add mojaloop repo to your Helm config \(optional\)
+3. Add mojaloop repo to your Helm config \(optional\)
```bash
helm repo add mojaloop http://mojaloop.io/helm/repo/
```
-9. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+4. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
```bash
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
```
-10. Update helm repositories
+5. Update helm repositories
- ```bash
- helm repro update
- ```
+ ```bash
+ helm repro update
+ ```
-11. Install nginx-ingress for load balancing & external access
+6. Install nginx-ingress for load balancing & external access
- ```bash
- helm --namespace kube-public install stable/nginx-ingress
- ```
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
-12. Add the following to your /ect/hosts
+7. Add the following to your /ect/hosts
- ```text
- 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
- ```
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
-13. Test system health in your browser after installation
+8. Test system health in your browser after installation
- ml-api-adapter health test
+ ml-api-adapter health test
- \`\`\`http request
+ \`\`\`http request
- [http://ml-api-adapter/health](http://ml-api-adapter/health)
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
- ```text
- ___
- central-ledger health test
- ```http request
- http://central-ledger/health
- ```
+ ```text
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
### 2.2 Helm
This section will provide guidelines to delete, list, install and upgrade of the
4. To upgrade Mojaloop chart\(s\)
- Note: 'v5.1.1' is an example value.
+ Note: 'v5.1.1' is an example value.
```bash
helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
```
-5. To upgrade a specific chart eg. Central-ledger
+5. To upgrade a specific chart eg. Central-ledger
```bash
helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
sudo ln -s /opt/Postman/Postman /usr/bin/postman
* \`central-ledger’s server IP address could not be found.
- ERR\_NAME\_NOT\_RESOLVED\`
+ ERR\_NAME\_NOT\_RESOLVED\`
- Resolved by:
+ Resolved by:
* Verify that a helm chart\(s\) was installed by executing
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
-[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubeInfrastructureArch.png)
+[Mojaloop Deployment Recommendations - Infrastructure Architecture](../Diagrams/Deployment/KubeInfrastructureArch.png)
#### 1.2 Local Deployment and Testing Tools
To install Kubernetes with Docker, follow the steps below;
* Click **Install** on the confirmation tab.
* The option is available to wait for completion or run as a background task.
-
-
-[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
+
+[Kubernetes Install with Docker 2](../Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
#### 2.1.2 Kubernetes environment setup:
or
The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
- 
-
- [kubernetes-dashboard](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/kubernetesDashboard.png)
+ 
+ [kubernetes-dashboard](../Diagrams/Deployment/kubernetesDashboard.png)
**Ubuntu** continue from here
# Mojaloop Deployment
-
+
## Deployment and Setup Introduction
This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
+
[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubeInfrastructureArch.png)
To install Kubernetes with Docker, follow the steps below;
* Increase the CPU allocation to at least 4
* Increase the Memory allocation to at least 8.0 GiB
-
+
+
[Kubernetes Install with Docker 1](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-1.png)
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
- 
+
- [Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubeInfrastructureArch.png)
+[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubeInfrastructureArch.png)
#### 1.2 Local Deployment and Testing Tools
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.
- 
+ 
[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubeInfrastructureArch.png)
# Mojaloop Deployment
## Deployment and Setup Introduction
+
This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
-* [Software List](#1-software-list)
- * [Deployment Recommendations](#11-deployment-recommendations)
- * [Local Deployment and Testing Tools](#12-local-deployment-and-testing-tools)
-* [Deployment](#2-deployment)
- * [Kubernetes](#21-kubernetes)
- * [Kubernetes Installation with Docker](#211-kubernetes-installation-with-docker)
- * [Kubernetes environment setup](#212-kubernetes-environment-setup)
- * [Helm](#22-helm)
- * [Helm Chart Installation](#221-helm-chart-installation)
- * [Postman](#23-postman)
- * [Installing Postman](#231-installing-postman)
- * [Setup Postman](#231-setup-postman)
-* [Errors During Setup](#24-errors-on-setup)
-
-## 1 Software List
-Before proceeding, please have a look at [Deployment Recommedations](#11-deployment-recommendations) to insure the minimum resource requirements are availlable.
+* [Software List](mojaloop-deployment.md#1-software-list)
+ * [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](mojaloop-deployment.md#12-local-deployment-and-testing-tools)
+* [Deployment](mojaloop-deployment.md#2-deployment)
+ * [Kubernetes](mojaloop-deployment.md#21-kubernetes)
+ * [Kubernetes Installation with Docker](mojaloop-deployment.md#211-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](mojaloop-deployment.md#212-kubernetes-environment-setup)
+ * [Helm](mojaloop-deployment.md#22-helm)
+ * [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation)
+ * [Postman](mojaloop-deployment.md#23-postman)
+ * [Installing Postman](mojaloop-deployment.md#231-installing-postman)
+ * [Setup Postman](mojaloop-deployment.md#231-setup-postman)
+* [Errors During Setup](mojaloop-deployment.md#24-errors-on-setup)
+
+## 1 Software List
+
+Before proceeding, please have a look at [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations) to insure the minimum resource requirements are available.
### 1.1 Deployment Recommendations
+
This provides environment resource recommendations with a view of the infrastructure architecture.
-##### Resources Requirements:
-- Control Plane (i.e. Master Node)
- ```http request
- https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components
- ```
- - 3x Master Nodes for future node scaling and HA (High Availability)
-- ETCd Plane:
- ```http request
- https://coreos.com/etcd/docs/latest/op-guide/hardware.html
- ```
- - 3x ETCd nodes for HA (High Availability)
-- Compute Plane (i.e. Worker Node):
+**Resources Requirements:**
+
+* Control Plane \(i.e. Master Node\)
+
+ \`\`\`http request
+
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+
+ \`\`\`
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
+
+* ETCd Plane:
+
+ \`\`\`http request
+
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+
+ \`\`\`
+
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
- TBC once load testing has been concluded. However the current general *recommended size:
- - 3x Worker nodes, each being:
- - 4x vCPUs, 16GB of RAM, and 40gb storage
-
- *Note that this would also depend on your underlaying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlying infrastructure, and it does NOT include requirements for persistent volumes/storage.

-
+
[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubeInfrastructureArch.png)
#### 1.2 Local Deployment and Testing Tools
+
### 1.2 Local Deployment and Testing Tools
+
The tool set to be deployed as part of the deployment process.
-|Tool|Required/Optional|Description|Install Info|
-|---|---|---|---|
-|Docker|Required|Docker Engine and CLI ClientLocal Kubernetes single node cluster|[https://docs.docker.com/install](https://docs.docker.com/install)|
-|Kubectl|Required|Kubernetes CLI for Kubernetes ManagementNote Docker installs this part of Kubernetes install|[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)Docker Kubernetes Install (as per this guide)Mac: `brew install kubernetes-cli`Ubuntu: `sudo snap install kubectl --classic`|
-|Kubectx|Optional(useful tool)|Kubernetes CLI for Kubernetes Context Management HelperNote Docker installs this as part of Kubernetes install|[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)Mac: `brew install kubectx`Ubuntu: `sudo apt install kubectx`|
-|Kubetail|Optional(useful tool)|Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running `kubectl logs -f` but for multiple pods.Example usage `kubetail moja.* -n demo`|https://github.com/johanhaleby/kubetail|
-|Helm|Required|Helm helps you manage Kubernetes applicationsHelm charts help you define, install and upgrade even the most complex Kubernetes application|[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)Mac: `brew install kubernetes-helm`Ubuntu: `sudo snap install helm --classic`|
-|Postman|Required|Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.|[https://www.getpostman.com/apps](https://www.getpostman.com/apps)|
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Install Info
+
+
+
+
+ Docker
+ Required
+
+ Docker Engine and CLI Client
+ Local Kubernetes single node cluster
+
+ [https://docs.docker.com/install](https://docs.docker.com/install)
+
+
+ Kubectl
+ Required
+
+ Kubernetes CLI for Kubernetes Management
+ Note Docker installs this part of Kubernetes install
+
+
+ [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)
+ Docker Kubernetes Install (as per this guide)
+ Mac: `brew install kubernetes-cli`
+ Ubuntu: `sudo snap install kubectl --classic`
+
+
+
+ Kubectx
+ Optional(useful tool)
+
+ Kubernetes CLI for Kubernetes Context Management Helper
+ Note Docker installs this as part of Kubernetes install
+
+
+ [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
+ Mac: `brew install kubectx`
+ Ubuntu: `sudo apt install kubectx`
+
+
+
+ Kubetail
+ Optional(useful tool)
+
+ Bash script that enables you to aggregate (tail/follow) logs from multiple
+ pods into one stream. This is the same as running `kubectl logs -f` but
+ for multiple pods.
+ Example usage `kubetail moja.* -n demo`
+
+ https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+
+ Helm helps you manage Kubernetes applications
+ Helm charts help you define, install and upgrade even the most complex
+ Kubernetes application
+
+
+ [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
+ Mac: `brew install kubernetes-helm`
+ Ubuntu: `sudo snap install helm --classic`
+
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's.
+ It presents you with a friendly GUI for the construction requests and reading
+ responces.
+ [https://www.getpostman.com/apps](https://www.getpostman.com/apps)
+
+
+## 2 Deployment
-## 2 Deployment
This section will guide the reader through the deployment process to setup Kubernetes within Docker.
### 2.1 Kubernetes
+
If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
-- Deployment
-- Pod
-- ReplicaSets
-- Service
-- Ingress
-- StatefulSet
-- DaemonSet
-- Ingress Controller
-- ConfigMap
-- Secret
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
#### 2.1.1 Kubernetes Installation with Docker
+
**Ubuntu**
-Note - Kubernetes with Docker is currently **not** available on Linux(Ubuntu) - please refer to; [https://forums.docker.com/](https://forums.docker.com/t/is-there-a-built-in-kubernetes-in-docker-ce-for-linux/54374)
+Note - Kubernetes with Docker is currently **not** available on Linux\(Ubuntu\) - please refer to; [https://forums.docker.com/](https://forums.docker.com/t/is-there-a-built-in-kubernetes-in-docker-ce-for-linux/54374)
We recommend installing a minikube local environment by follow the steps below;
With reference to [https://kubernetes.io/docs/tasks/tools/install-minikube/](https://kubernetes.io/docs/tasks/tools/install-minikube/)
- - VT-x or AMD-v virtualization must be enabled in your computer’s BIOS. To check this on Linux run the following and verify the output is **non-empty**:
- ```bash
- egrep --color 'vmx|svm' /proc/cpuinfo
- ```
- - Install a Hypervisor:
- - [KVM](http://www.linux-kvm.org/) - Recommended Linux driver
- or
-
- - [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
+* VT-x or AMD-v virtualization must be enabled in your computer’s BIOS. To check this on Linux run the following and verify the output is **non-empty**:
- - **kubectl** should already be installed. To verify, check the version;
```bash
- kubectl version
- ```
- If an error is returned, please refer to [Local Deployment and Testing Tools](#12-local-deployment-and-testing-tools).
-
-- **minikube** installation
+ egrep --color 'vmx|svm' /proc/cpuinfo
+ ```
+
+* Install a Hypervisor:
+
+ * [KVM](http://www.linux-kvm.org/) - Recommended Linux driver
+
+ or
+
+ * [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
+
+* **kubectl** should already be installed. To verify, check the version;
+
+ ```bash
+ kubectl version
+ ```
+
+ If an error is returned, please refer to [Local Deployment and Testing Tools](mojaloop-deployment.md#12-local-deployment-and-testing-tools).
+
+* **minikube** installation
+
```bash
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
```
-- Start a cluster by running:
-
- **Note** - if you have install KVM as the Hypervisor, you might need to include `--vm-driver=KVM` in the startup command. The default is to startup with VirtualBox.
+* Start a cluster by running:
+
+ **Note** - if you have install KVM as the Hypervisor, you might need to include `--vm-driver=KVM` in the startup command. The default is to startup with VirtualBox.
+
```bash
minikube start
```
-
+
Once successfully started, you can interact with your cluster using kubectl, just like any other Kubernetes cluster.
-
-- Lunching the Minikube Dashboard
-
- The minikube dashboard can be opened and access via your default browser.
+
+* Lunching the Minikube Dashboard
+
+ The minikube dashboard can be opened and access via your default browser.
+
```bash
minikube dashboard
```
-
+
Continue from the **Config Helm CLI and install Helm Tiller...** section below.
-
+
**Mac**
To install Kubernetes with Docker, follow the steps below;
- - Click on the Docker icon on the status barr
- - Select **Preferences**
- - Go to **Advanced**
- - Increase the CPU allocation to at least 4
- - Increase the Memory allocation to at least 8.0 GiB
+
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB

[Kubernetes Install with Docker 1](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-1.png)
- - Go to **Kubernetes**
- - Select **Enable Kubernetes** tick box
- - Make sure **Kubernetes** is selected
- - Click **Apply**
- - Click **Install** on the confirmation tab.
- - The option is available to wait for completion or run as a background task.
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.

[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
#### 2.1.2 Kubernetes environment setup:
-The following are all command line executables specifically for **Mac**.
-1. List the current Kubernetes context;
- ```bash
+
+The following are all command line executables specifically for **Mac**. 1. List the current Kubernetes context;
+
+```bash
kubectl config get-contexts
- ```
- or
- ```bash
+```
+
+or
+
+```bash
kubectx
- ```
+```
+
1. Change your Contexts;
+
```bash
kubectl config use-contexts
```
+
or
+
```bash
kubectx docker-for-desktop
```
-1. Install Kubernetes Dashboard roles, services & deployment. (Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard))
- **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+2. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+
```bash
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
```
-1. Verify Kubernetes Dashboard;
+
+3. Verify Kubernetes Dashboard;
+
```bash
kubectl get pod --namespace=kube-system |grep dashboard
```
-1. Start proxy for local UI in new terminal;
+
+4. Start proxy for local UI in new terminal;
+
```bash
kubectl proxy ui
```
-1. Open URI in default browser
+
+5. Open URI in default browser
+
```bash
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
```
- Select __Token__. Generate a token to use there by:
+
+ Select **Token**. Generate a token to use there by:
+
```bash
kubectl -n kube-system get secrets | grep dashboard-token
```
- ___
+
The token to use is shown on the last line of the output of that command.
- ___
+
```bash
kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
```
- The __{kubernetes-dashboard-token-btbwf}__ is retrieved from the output in the previous step.
- For more information on generating the token, follow the __Authentication__ link in the window.
-
+
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+

[kubernetes-dashboard](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/kubernetesDashboard.png)
**Ubuntu** continue from here
-1. Config Helm CLI and install Helm Tiller on K8s cluster
+
+6. Config Helm CLI and install Helm Tiller on K8s cluster
```bash
helm init
```
-1. Validate Helm Tiller is up and running
+
+7. Validate Helm Tiller is up and running
+
```bash
kubectl -n kube-system get po | grep tiller
```
-1. Add mojaloop repo to your Helm config (optional)
+
+8. Add mojaloop repo to your Helm config \(optional\)
+
```bash
helm repo add mojaloop http://mojaloop.io/helm/repo/
```
-1. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+
+9. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+
```bash
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
```
-1. Update helm repositories
- ```bash
- helm repro update
- ```
-1. Install nginx-ingress for load balancing & external access
- ```bash
- helm --namespace kube-public install stable/nginx-ingress
- ```
-1. Add the following to your /ect/hosts
- ```text
- 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
- ```
-1. Test system health in your browser after installation
- ___
- ml-api-adapter health test
- ```http request
- http://ml-api-adapter/health
- ```
- ___
- central-ledger health test
- ```http request
- http://central-ledger/health
- ```
+10. Update helm repositories
+
+ ```bash
+ helm repro update
+ ```
+
+11. Install nginx-ingress for load balancing & external access
+
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+12. Add the following to your /ect/hosts
+
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+13. Test system health in your browser after installation
+
+ ml-api-adapter health test
+
+ \`\`\`http request
+
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+
+ ```text
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
### 2.2 Helm
-Please review [Mojaloop Helm Chart](../Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
-##### 2.2.1 Helm Chart Installation
+Please review [Mojaloop Helm Chart](https://github.com/mojaloop/documentation/tree/3511973fa37b3329321cdcbe97c0f27b78b0c8b8/Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+**2.2.1 Helm Chart Installation**
+
This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
1. Lets start by **listing** the current helm charts deployed
+
```bash
helm list
```
-1. If you would like to **delete** a deployed helm chart
+2. If you would like to **delete** a deployed helm chart
+
```bash
helm del --purge moja
```
- __Note:__ for demo purposes we are using __moja__ as the chart __name__. Please verify and use the correct chart name from the listing above.
-
-1. To **install** Mojaloop chart(s)
+
+ **Note:** for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
+
+3. To **install** Mojaloop chart\(s\)
**Ubuntu** - It might be required to execute `helm install` and `helm upgrade` under `sudo`.
-
+
To install the full mojaloop project
+
```bash
helm install --namespace=demo --name=moja mojaloop/mojaloop
```
+
Alternative directly from the repository:
+
```bash
helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
```
- __or__ install a specific mojaloop chart eg. Central-ledger
+ **or** install a specific mojaloop chart eg. Central-ledger
+
```bash
helm install --namespace=demo --name=moja mojaloop/centralledger
```
- Alternative directly from the repository:
+
+ Alternative directly from the repository:
+
```bash
helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
```
-1. To upgrade Mojaloop chart(s)
+
+4. To upgrade Mojaloop chart\(s\)
+
Note: 'v5.1.1' is an example value.
+
```bash
helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
```
-1. To upgrade a specific chart eg. Central-ledger
+
+5. To upgrade a specific chart eg. Central-ledger
+
```bash
helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
```
### 2.3 Postman
+
Postman is used to send requests and receive responses.
-##### 2.3.1 Installing Postman
+**2.3.1 Installing Postman**
+
Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
Alternatively on **Ubuntu** you may run:
+
```bash
wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
sudo tar -xzf postman.tar.gz -C /opt
sudo ln -s /opt/Postman/Postman /usr/bin/postman
```
#### 2.3.1 Setup Postman
-* Download this file https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json
+
+* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
-* Select the *Mojaloop.postman_collection.json* file you downloaded
-* You'll now need to import environment variables. For local testing, download this file https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json
+* Select the _Mojaloop.postman\_collection.json_ file you downloaded
+* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
-* Select the *MojaloopLocal.postman_environment.json* file you downloaded
-* In the imported collection, navigate to the *central_ledger* directory
+* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+* In the imported collection, navigate to the _central\_ledger_ directory
### 2.4 Errors On Setup
-* `central-ledger’s server IP address could not be found.
- ERR_NAME_NOT_RESOLVED`
+
+* \`central-ledger’s server IP address could not be found.
+
+ ERR\_NAME\_NOT\_RESOLVED\`
+
Resolved by:
- * Verify that a helm chart(s) was installed by executing
- ```bash
- helm list
- ```
- If the helm charts are not listed, see the [Helm Chart Installation](#221-helm-chart-installation) section to install a chart.
-___
+
+ * Verify that a helm chart\(s\) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation) section to install a chart.
+
To install Kubernetes with Docker, follow the steps below;
- Increase the CPU allocation to at least 4
- Increase the Memory allocation to at least 8.0 GiB
-
+
-[Kubernetes Install with Docker 1](../Wiki/KubernetesInstallWithDocker-1.png)
+[Kubernetes Install with Docker 1](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-1.png)
- Go to **Kubernetes**
- Select **Enable Kubernetes** tick box
To install Kubernetes with Docker, follow the steps below;
- Click **Install** on the confirmation tab.
- The option is available to wait for completion or run as a background task.
-
+
-[Kubernetes Install with Docker 2](../Wiki/KubernetesInstallWithDocker-2.png)
+[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubernetesInstallWithDocker-2.png)
#### 2.1.2 Kubernetes environment setup:
The following are all command line executables specifically for **Mac**.
The following are all command line executables specifically for **Mac**.
The __{kubernetes-dashboard-token-btbwf}__ is retrieved from the output in the previous step.
For more information on generating the token, follow the __Authentication__ link in the window.
- 
+ 
- [kubernetes-dashboard](../Wiki/kubernetesDashboard.png)
+ [kubernetes-dashboard](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/kubernetesDashboard.png)
**Ubuntu** continue from here
1. Config Helm CLI and install Helm Tiller on K8s cluster
# Mojaloop Deployment
-## Mojaloop Deployment
-
## Deployment and Setup Introduction
-
This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
-* [Software List](mojaloop-deployment.md#1-software-list)
- * [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations)
- * [Local Deployment and Testing Tools](mojaloop-deployment.md#12-local-deployment-and-testing-tools)
-* [Deployment](mojaloop-deployment.md#2-deployment)
- * [Kubernetes](mojaloop-deployment.md#21-kubernetes)
- * [Kubernetes Installation with Docker](mojaloop-deployment.md#211-kubernetes-installation-with-docker)
- * [Kubernetes environment setup](mojaloop-deployment.md#212-kubernetes-environment-setup)
- * [Helm](mojaloop-deployment.md#22-helm)
- * [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation)
- * [Postman](mojaloop-deployment.md#23-postman)
- * [Installing Postman](mojaloop-deployment.md#231-installing-postman)
- * [Setup Postman](mojaloop-deployment.md#231-setup-postman)
-* [Errors During Setup](mojaloop-deployment.md#24-errors-on-setup)
-
-### 1 Software List
-
-Before proceeding, please have a look at [Deployment Recommedations](mojaloop-deployment.md#11-deployment-recommendations) to insure the minimum resource requirements are availlable.
-
-#### 1.1 Deployment Recommendations
-
+* [Software List](#1-software-list)
+ * [Deployment Recommendations](#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](#12-local-deployment-and-testing-tools)
+* [Deployment](#2-deployment)
+ * [Kubernetes](#21-kubernetes)
+ * [Kubernetes Installation with Docker](#211-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](#212-kubernetes-environment-setup)
+ * [Helm](#22-helm)
+ * [Helm Chart Installation](#221-helm-chart-installation)
+ * [Postman](#23-postman)
+ * [Installing Postman](#231-installing-postman)
+ * [Setup Postman](#231-setup-postman)
+* [Errors During Setup](#24-errors-on-setup)
+
+## 1 Software List
+Before proceeding, please have a look at [Deployment Recommedations](#11-deployment-recommendations) to insure the minimum resource requirements are availlable.
+
+### 1.1 Deployment Recommendations
This provides environment resource recommendations with a view of the infrastructure architecture.
-**Resources Requirements:**
-
-* Control Plane \(i.e. Master Node\)
-
- \`\`\`http request
-
- [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
-
- \`\`\`
-
- * 3x Master Nodes for future node scaling and HA \(High Availability\)
-
-* ETCd Plane:
-
- \`\`\`http request
-
- [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
-
- \`\`\`
-
- * 3x ETCd nodes for HA \(High Availability\)
-
-* Compute Plane \(i.e. Worker Node\):
-
- TBC once load testing has been concluded. However the current general \*recommended size:
-
- * 3x Worker nodes, each being:
- * 4x vCPUs, 16GB of RAM, and 40gb storage
-
- \*Note that this would also depend on your underlaying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+##### Resources Requirements:
+- Control Plane (i.e. Master Node)
+ ```http request
+ https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components
+ ```
+ - 3x Master Nodes for future node scaling and HA (High Availability)
+- ETCd Plane:
+ ```http request
+ https://coreos.com/etcd/docs/latest/op-guide/hardware.html
+ ```
+ - 3x ETCd nodes for HA (High Availability)
+- Compute Plane (i.e. Worker Node):
+ TBC once load testing has been concluded. However the current general *recommended size:
+ - 3x Worker nodes, each being:
+ - 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ *Note that this would also depend on your underlaying infrastructure, and it does NOT include requirements for persistent volumes/storage.

[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubeInfrastructureArch.png)
#### 1.2 Local Deployment and Testing Tools
-
+### 1.2 Local Deployment and Testing Tools
The tool set to be deployed as part of the deployment process.
-
-
-
- Tool
- Required/Optional
- Description
- Install Info
-
-
-
-
- Docker
- Required
-
- Docker Engine and CLI Client
- Local Kubernetes single node cluster
-
- [https://docs.docker.com/install](https://docs.docker.com/install)
-
-
- Kubectl
- Required
-
- Kubernetes CLI for Kubernetes Management
- Note Docker installs this part of Kubernetes install
-
-
- [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/doc/tasks/tools/install-kuberctl)
- Docker Kubernetes Install (as per this guide)
- Mac: brew install kubernetes-cli
-
-
-
- Kubectx
- Optional(useful tool)
-
- Kubernetes CLI for Kubernetes Context Management Helper
- Note Docker insgtalls this as part of Kubernetes install
-
-
- [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
- Mac: brew install kubectx
-
-
-
- Kubetail
- Optional(useful tool)
-
- Bash script that enables you to aggregate (tail/follow) logs from multiple
- pods into one stream. This is the same as running `kubectl logs -f` but
- for multiple pods.
- Example usage `kubetail moja.* -n demo`
-
- https://github.com/johanhaleby/kubetail
-
-
- Helm
- Required
-
- Helm helps you manage Kubernetes applications
- Helm charts help you define, install and upgrade even the most complex
- Kubernetes application
-
-
- [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
- Mac: brew install kubernetes-helm
-
-
-
- Postman
- Required
- Postman is a Google Chrome application for the interacting with HTTP API's.
- It presents you with a friendly GUI for the construction requests and reading
- responces.
- [https://www.getpostman.com/apps](https://www.getpostman.com/apps)
-
-
-### 2 Deployment
+|Tool|Required/Optional|Description|Install Info|
+|---|---|---|---|
+|Docker|Required|Docker Engine and CLI ClientLocal Kubernetes single node cluster|[https://docs.docker.com/install](https://docs.docker.com/install)|
+|Kubectl|Required|Kubernetes CLI for Kubernetes ManagementNote Docker installs this part of Kubernetes install|[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/docs/tasks/tools/install-kubectl)Docker Kubernetes Install (as per this guide)Mac: `brew install kubernetes-cli`Ubuntu: `sudo snap install kubectl --classic`|
+|Kubectx|Optional(useful tool)|Kubernetes CLI for Kubernetes Context Management HelperNote Docker installs this as part of Kubernetes install|[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)Mac: `brew install kubectx`Ubuntu: `sudo apt install kubectx`|
+|Kubetail|Optional(useful tool)|Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running `kubectl logs -f` but for multiple pods.Example usage `kubetail moja.* -n demo`|https://github.com/johanhaleby/kubetail|
+|Helm|Required|Helm helps you manage Kubernetes applicationsHelm charts help you define, install and upgrade even the most complex Kubernetes application|[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)Mac: `brew install kubernetes-helm`Ubuntu: `sudo snap install helm --classic`|
+|Postman|Required|Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.|[https://www.getpostman.com/apps](https://www.getpostman.com/apps)|
+## 2 Deployment
This section will guide the reader through the deployment process to setup Kubernetes within Docker.
-#### 2.1 Kubernetes
-
+### 2.1 Kubernetes
If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+- Deployment
+- Pod
+- ReplicaSets
+- Service
+- Ingress
+- StatefulSet
+- DaemonSet
+- Ingress Controller
+- ConfigMap
+- Secret
+
+#### 2.1.1 Kubernetes Installation with Docker
+**Ubuntu**
+
+Note - Kubernetes with Docker is currently **not** available on Linux(Ubuntu) - please refer to; [https://forums.docker.com/](https://forums.docker.com/t/is-there-a-built-in-kubernetes-in-docker-ce-for-linux/54374)
+
+We recommend installing a minikube local environment by follow the steps below;
+
+With reference to [https://kubernetes.io/docs/tasks/tools/install-minikube/](https://kubernetes.io/docs/tasks/tools/install-minikube/)
+ - VT-x or AMD-v virtualization must be enabled in your computer’s BIOS. To check this on Linux run the following and verify the output is **non-empty**:
+ ```bash
+ egrep --color 'vmx|svm' /proc/cpuinfo
+ ```
+ - Install a Hypervisor:
+ - [KVM](http://www.linux-kvm.org/) - Recommended Linux driver
-* Deployment
-* Pod
-* ReplicaSets
-* Service
-* Ingress
-* StatefulSet
-* DaemonSet
-* Ingress Controller
-* ConfigMap
-* Secret
+ or
+
+ - [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
+
+ - **kubectl** should already be installed. To verify, check the version;
+ ```bash
+ kubectl version
+ ```
+ If an error is returned, please refer to [Local Deployment and Testing Tools](#12-local-deployment-and-testing-tools).
+
+- **minikube** installation
+ ```bash
+ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
+ ```
-**2.1.1 Kubernetes Installation with Docker**
+- Start a cluster by running:
+
+ **Note** - if you have install KVM as the Hypervisor, you might need to include `--vm-driver=KVM` in the startup command. The default is to startup with VirtualBox.
+ ```bash
+ minikube start
+ ```
+
+ Once successfully started, you can interact with your cluster using kubectl, just like any other Kubernetes cluster.
+
+- Lunching the Minikube Dashboard
+
+ The minikube dashboard can be opened and access via your default browser.
+ ```bash
+ minikube dashboard
+ ```
+
+ Continue from the **Config Helm CLI and install Helm Tiller...** section below.
+
+**Mac**
To install Kubernetes with Docker, follow the steps below;
+ - Click on the Docker icon on the status barr
+ - Select **Preferences**
+ - Go to **Advanced**
+ - Increase the CPU allocation to at least 4
+ - Increase the Memory allocation to at least 8.0 GiB
-* Click on the Docker icon on the status barr
- * Select **Preferences**
- * Go to **Advanced**
- * Increase the CPU allocation to at least 4
- * Increase the Memory allocation to at least 8.0 GiB
+
-
+[Kubernetes Install with Docker 1](../Wiki/KubernetesInstallWithDocker-1.png)
-[Kubernetes Install with Docker 1](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Wiki/KubernetesInstallWithDocker-1.png)
+ - Go to **Kubernetes**
+ - Select **Enable Kubernetes** tick box
+ - Make sure **Kubernetes** is selected
+ - Click **Apply**
+ - Click **Install** on the confirmation tab.
+ - The option is available to wait for completion or run as a background task.
-* Go to **Kubernetes**
- * Select **Enable Kubernetes** tick box
- * Make sure **Kubernetes** is selected
- * Click **Apply**
- * Click **Install** on the confirmation tab.
- * The option is available to wait for completion or run as a background task.
+
-
+[Kubernetes Install with Docker 2](../Wiki/KubernetesInstallWithDocker-2.png)
-[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Wiki/KubernetesInstallWithDocker-2.png)
-
-**2.1.2 Kubernetes environment setup:**
-
-The following are all command line executables specifically for Mac. 1. List the current Kubernetes context;
-
-```bash
+#### 2.1.2 Kubernetes environment setup:
+The following are all command line executables specifically for **Mac**.
+1. List the current Kubernetes context;
+ ```bash
kubectl config get-contexts
-```
-
-or
-
-```bash
+ ```
+ or
+ ```bash
kubectx
-```
-
+ ```
1. Change your Contexts;
-
```bash
kubectl config use-contexts
```
-
or
-
```bash
kubectx docker-for-desktop
```
+1. Install Kubernetes Dashboard roles, services & deployment. (Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard))
-2. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
-
- **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
-
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
```bash
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
```
-
-3. Verify Kubernetes Dashboard;
-
+1. Verify Kubernetes Dashboard;
```bash
kubectl get pod --namespace=kube-system |grep dashboard
```
-
-4. Start proxy for local UI in new terminal;
-
+1. Start proxy for local UI in new terminal;
```bash
kubectl proxy ui
```
-
-5. Open URI in default browser
-
+1. Open URI in default browser
```bash
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
```
-
- Select **Token**. Generate a token to use there by:
-
+ Select __Token__. Generate a token to use there by:
```bash
kubectl -n kube-system get secrets | grep dashboard-token
```
-
+ ___
The token to use is shown on the last line of the output of that command.
-
+ ___
```bash
kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
```
+ The __{kubernetes-dashboard-token-btbwf}__ is retrieved from the output in the previous step.
+ For more information on generating the token, follow the __Authentication__ link in the window.
+
+ 
- The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
-
- 
+ [kubernetes-dashboard](../Wiki/kubernetesDashboard.png)
- [kubernetes-dashboard](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Wiki/kubernetesDashboard.png)
-
-6. Config Helm CLI and install Helm Tiller on K8s cluster
+ **Ubuntu** continue from here
+1. Config Helm CLI and install Helm Tiller on K8s cluster
```bash
helm init
```
-
-7. Validate Helm Tiller is up and running
-
+1. Validate Helm Tiller is up and running
```bash
kubectl -n kube-system get po | grep tiller
```
-
-8. Add mojaloop repo to your Helm config \(optional\)
-
+1. Add mojaloop repo to your Helm config (optional)
```bash
helm repo add mojaloop http://mojaloop.io/helm/repo/
```
-
-9. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
-
+1. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
```bash
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
```
-10. Update helm repositories
-
- ```bash
- helm repro update
- ```
-
-11. Install nginx-ingress for load balancing & external access
-
- ```bash
- helm --namespace kube-public install stable/nginx-ingress
- ```
-
-12. Add the following to your /ect/hosts
-
- ```text
- 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
- ```
-
-13. Test system health in your browser after installation
-
- ml-api-adapter health test
-
- \`\`\`http request
-
- [http://ml-api-adapter/health](http://ml-api-adapter/health)
-
- ```text
- ___
- central-ledger health test
- ```http request
- http://central-ledger/health
- ```
-
-#### 2.2 Helm
-
-Please review [Mojaloop Helm Chart](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
+1. Update helm repositories
+ ```bash
+ helm repro update
+ ```
+1. Install nginx-ingress for load balancing & external access
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+1. Add the following to your /ect/hosts
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+1. Test system health in your browser after installation
+ ___
+ ml-api-adapter health test
+ ```http request
+ http://ml-api-adapter/health
+ ```
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
-**2.2.1 Helm Chart Installation**
+### 2.2 Helm
+Please review [Mojaloop Helm Chart](../Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
+##### 2.2.1 Helm Chart Installation
This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
1. Lets start by **listing** the current helm charts deployed
-
```bash
helm list
```
-2. If you would like to **delete** a deployed helm chart
-
+1. If you would like to **delete** a deployed helm chart
```bash
helm del --purge moja
```
+ __Note:__ for demo purposes we are using __moja__ as the chart __name__. Please verify and use the correct chart name from the listing above.
+
+1. To **install** Mojaloop chart(s)
- **Note:** for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
-
-3. To **install** Mojaloop chart\(s\)
-
+ **Ubuntu** - It might be required to execute `helm install` and `helm upgrade` under `sudo`.
+
To install the full mojaloop project
-
```bash
helm install --namespace=demo --name=moja mojaloop/mojaloop
```
-
Alternative directly from the repository:
-
```bash
helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
```
- **or** install a specific mojaloop chart eg. Central-ledger
-
+ __or__ install a specific mojaloop chart eg. Central-ledger
```bash
helm install --namespace=demo --name=moja mojaloop/centralledger
```
-
- Alternative directly from the repository:
-
+ Alternative directly from the repository:
```bash
helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
```
-
-4. To upgrade Mojaloop chart\(s\)
-
+1. To upgrade Mojaloop chart(s)
Note: 'v5.1.1' is an example value.
-
```bash
helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
```
-
-5. To upgrade a specific chart eg. Central-ledger
-
+1. To upgrade a specific chart eg. Central-ledger
```bash
helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
```
-#### 2.3 Postman
-
+### 2.3 Postman
Postman is used to send requests and receive responses.
-**2.3.1 Installing Postman**
-
+##### 2.3.1 Installing Postman
Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
Alternatively on **Ubuntu** you may run:
-
```bash
wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
sudo tar -xzf postman.tar.gz -C /opt
rm postman.tar.gz
sudo ln -s /opt/Postman/Postman /usr/bin/postman
```
-**2.3.1 Setup Postman**
-
-* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
+#### 2.3.1 Setup Postman
+* Download this file https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json
* Open **Postman**
* Click **Import** and then **Import File**
-* Select the _Mojaloop.postman\_collection.json_ file you downloaded
-* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
+* Select the *Mojaloop.postman_collection.json* file you downloaded
+* You'll now need to import environment variables. For local testing, download this file https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json
* Click **Import** and then **Import File**
-* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
-* In the imported collection, navigate to the _central\_ledger_ directory
-
-#### 2.4 Errors On Setup
-
-* \`central-ledger’s server IP address could not be found.
-
- ERR\_NAME\_NOT\_RESOLVED\`
+* Select the *MojaloopLocal.postman_environment.json* file you downloaded
+* In the imported collection, navigate to the *central_ledger* directory
+### 2.4 Errors On Setup
+* `central-ledger’s server IP address could not be found.
+ ERR_NAME_NOT_RESOLVED`
Resolved by:
-
- * Verify that a helm chart\(s\) was installed by executing
-
- ```bash
- helm list
- ```
-
- If the helm charts are not listed, see the [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation) section to install a chart.
-
+ * Verify that a helm chart(s) was installed by executing
+ ```bash
+ helm list
+ ```
+ If the helm charts are not listed, see the [Helm Chart Installation](#221-helm-chart-installation) section to install a chart.
+___
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlaying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+ 
+
[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubeInfrastructureArch.png)
#### 1.2 Local Deployment and Testing Tools
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlaying infrastructure, and it does NOT include requirements for persistent volumes/storage.
- 
-
- [Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Wiki/KubeInfrastructureArch.svg)
+ [Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/blob/master/Diagrams/Deployment/KubeInfrastructureArch.png)
#### 1.2 Local Deployment and Testing Tools
This provides environment resource recommendations with a view of the infrastruc
\*Note that this would also depend on your underlaying infrastructure, and it does NOT include requirements for persistent volumes/storage.
- 
+ 
[Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Wiki/KubeInfrastructureArch.svg)
* [Documentation](contributors-guide/documentation.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Background](mojaloop-background/README.md)
+ * [Core Scenarios](mojaloop-background/core-scenarios.md)
* [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Repositories](mojaloop-technical-overview/repositories.md)
+# Core Scenarios
+
+## About Mojaloop Scenarios
+
+Mojaloop addresses a number of scenarios in which this software might help the poor to meet their financial and banking needs. There are several different paths for each of these scenarios, including potential timeout issues and reversals \(which are handled as a separate transaction\). The most common paths include:
+
+* Send money to anyone
+* Buy Goods
+* Bulk Payments
+* Tiers/Risk Level
+* Fraud Checks and Blacklists
+* Account Management
+* Check Account and POS
+
+### Scenario Descriptions
+
+#### Send money to anyone
+
+Hamim is working on his farm in Northern Uganda when he receives an urgent phone call from his brother, Kani. Kani is low on money and will not get paid until next week. Kani has no money to pay for food for his family and asks Hamim to help him out. Hamim and Kani have no means of transportation and it would take several days for Hamim to get to his Kani's home in Southern Uganda. While they both have mobile flip phones, they use different financial service providers. Kani tells Hamim that he needs 5,000 shillings to buy food until he gets paid next week for his job working in a local field. Hamin agrees to send Kani the money.
+
+```text
+ *** Mojaloop technology does its job ***
+```
+
+Because Hamim has sent money to Kani before he has his information on his phone. Hamim sees Kani's name come up on his phone and he starts the transaction. He also sees the total fees and any exchange rates he has to pay before he sends the money. He is happy for that validation and that the transaction goes the same way every time. In under 30 seconds, Hamim is able to send the money to his Kani and verifies that he got it. Hamim is happy he was able to help out Kani and his family so quickly so they can buy food.
+
+#### Buy Goods - Pending Transactions
+
+Venya is waiting in line to buy plantains at her local market. She is corralling her elder child with one hand and has her baby in a sling. She often comes to this seller and she knows he has a good price. She also knows that even though she carries no money and he is not on her financial network, she can buy from him. As she approaches the head of the line she juggles the children and pulls out a simple flip phone. She tells him 1.5 kilograms and he tells her the price, which she agrees to.
+
+```text
+ *** Mojaloop technology does its job ***
+```
+
+Because she's been here before the merchant already has her information on his phone. The only information he has is her user number. This makes Venya feel safe that the merchant does not have her mobile phone number. The merchant enters in the amount for the plantains. Almost instantaneously, Venya sees the merchants invoice on her phone and she is glad she is able to pay for the transaction using her mWallet account. She is happy that the transaction goes the same way every time, because half of her attention is on the children. She has friends who can't read and they are able to buy things this way too by following the simple order of the transaction. In under 30 seconds, she is able to send the money to the merchant and both Venya and the merchant get confirmation of the transaction. She tells the elder child to pick up her plantains and makes room for the next person in line.
+
+#### Bulk Payments
+
+Nikisha is the accountant for one of the largest manufacturing companies in Johannesburg and employs over 250 workers. Their company uses a time and attendance system to track the number of hours that each employee works along with their hourly rate and employee ID. On a weekly basis Nikisha gets an update on her bulk payment system that shows all the employees, their user ID along and amount to be paid. Since the companies employees all have different financial service providers this system makes it really easy for Nikisha to confirm and distribute their pay with a couple of clicks. The company has a high turnover rate so new employees who get their first paycheck are automatically prompted to open an account as long as they provided a valid mobile number when they started. As Nikisha gets ready to send out this week's payments she opens up a bulk payment report.
+
+```text
+*** Mojaloop technology does its job ***
+```
+
+The bulk report for payments comes up by date range and, since Nikisha does this weekly, there are several items she needs to verify each time. Specifically, she looks for any errors or alerts for employees with invalid phone numbers, names not matching or other anomalies. Nikisha has the ability to follow-up with her co-workers or employees directly to fix these errors before sending out the payments. In addition, Nikisha is also notified of any employees who don't have an account setup. For these users, Nikisha is still able to push a payment through and the employee will be prompted by text message to open an account. Nikisha is thankful she has this process that makes it much easier to distribute funds. Once Nikisha has completed her validation, she sends it to her supervisor for final approval. Nikisha is glad to have this system in place because several years ago, Nikisha and her supervisor had to pay employees in cash and use a manual system to verify payments were received which made her feel very uneasy.
+
+#### Tiers/Risk Levels
+
+Salem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor, manage and reduce risk for the company. order to do so each new user ID in the system is assigned a default tier level which means they can only transfer a small number and amount of funds in and out of the system over specific periods of time. As users acquire greater balances in their accounts and hold their accounts for longer periods of time their tier levels improve. Tier levels are handled automatically by the system so Salem does not need to worry about assigning or changing these levels under normal circumstances. Part of Salem's job as an auditor is to review the daily reports to ensure that everyone's funds are safe and secure and he kicks off his daily report to review the accounts.
+
+```text
+*** Mojaloop technology does its job ***
+```
+
+This morning when Salem reviews these reports he notices that one specific user ID has 32 outgoing transactions in one day which exceeds their daily count of 25. This seems very suspicious to Salem and he goes ahead and contacts the customer. It turns out that this customer is a local merchant that owns a store. The merchant explains that he has to go to the market on a weekly basis to get ingredients for his restaurant and it is not uncommon for him and his staff to make more than 25 purchases in one day. Although this customer has only been with Salem's bank for a month then have a healthy balance in their account. Salem goes ahead and upgrades the customers tier level to increase the daily and weekly transaction counts.
+
+#### Fraud Checks and Blacklists
+
+Salem works as an auditor for a large bank in Kampala, Uganda. His job is to monitor and stop any fraudulent activity for the company. While the company has a set of rules that might flag individuals for Salem to investigate, he also has the authority to screen any user ID for fraudulent activities at any time. Each time Salem performs a fraud check on a user ID, the system records the date of the last check along with any comments that Salem might have made. This makes it very easy for Salem to search for IDs that might have never been checked for fraud or have not been checked in a very long time. Salem has been monitoring one particular ID that seems to have had an increased amount of incoming funds deposited into their account on a daily basis. Today he does a search of the user ID to investigate further.
+
+```text
+*** Mojaloop technology does its job ***
+```
+
+When the user ID is retrieved Salem is able to see the customer's name, birthdate and national ID number. He also sees any additional IDs and the account type associated with this customer. Upon further inspection Salem sees once again the number and amount of transactions deposited into this account has doubled again today. Salem suspects that this user is involved in some illegal activity and would like to send this up to his supervisor to get someone to do a deeper investigation. In the meantime to ensure that the illegal funds don't continue to come into the system, Salem decides to 'freeze' the account. Salem does this by checking the blacklist button and indicating a reason for the blacklist. At this point any future deposits or withdrawals for this User ID will be denied until someone from the Bank removes them from the blacklist. Salem feels good that no additional funds that might of come from illegal or unapproved sources will be deposited into this customer account.
+
+#### Account Management
+
+Tadeo just bought his first mobile flip phone for him and his family to share. He is happy that he finally has a phone that he can use in emergencies, but he can also finally keep his money secure by opening up a bank account. Tadeo has never had a bank account since he lives in a very remote part of Africa with no personal means of transportation. Tadeo and his family have to rely on bartering or cash to buy any goods they need at the market. Although Tadeo is not proficient in reading, he is able to easily use his phone to setup and account for him and his family by following a couple of easy to read menu steps.
+
+```text
+*** Mojaloop technology does its job ***
+```
+
+Tadeo was able to use his phone to create an mWallet account using his National ID. He was also asked to create a unique pin which made him feel secure in case him or someone in the family lost the phone. Tadeo is the primary account owner and he was able to easily create a new account for his oldest son. He was very pleased that he could have separate accounts for his son. His son is married and lives with Tadeo but does not have a phone. Since his son works it is only fair that they should be able to spend his money on goods and foods that he and his wife prefer. Tadeo also adds his wife as a user on his account. He allows his wife to be a signatory since she does most of the shopping at the local market and now has the ability to pay for goods using this phone. Tadeo is very happy that his wife no longer needs to have cash or carry barter goods to the market.
+
+#### Check Account and POS
+
+Jahari has a flip phone that all the family uses and he has setup different user numbers for each family member. Jahari is at the local market and needs to buy some meat for his family. Before he does, he wants to make sure he has enough funds in his account to purchase the goods and still have enough left over to set aside for future medical expenses and education. Jahari is happy that his money is secure and he is able to check his account balance anytime he needs to by simply entering his secure pin on his phone. Once he confirms his balance he will buy some goat and cow meat at the market.
+
+```text
+ *** Mojaloop technology does its job ***
+```
+
+After Jahari has entered his pin on his phone he is able to see his account balance. He is also able to see to see any of his recent transactions as well as any fees that were associated with these transactions. After confirming his available funds he picks out his meat and brings it up to the merchant for payment. The merchant does a lot of business in this market and has a point of sales device. This is very helpful for Jahari and his family since they only have one phone and many times his wife or his children go to the market and do not have the phone with them. The merchant is able to enter the purchase amount on the POS device and Jahari or any of his family members securely enters their user number and reviews the transaction. Jahari confirms that the amount on the POS machine matches what the merchant verbally told him and he enters his pin to approve the transaction.
+
+```text
+*** Mojaloop technology does its job ***
+```
+
+The merchant gets confirmation that he received payment and he prints a receipt for Jahari. Since Jahari has his phone with him today he also re-checks his account balance again to confirm that appropriate funds were taken from his account. Jahari is happy that this is an easy process and he can see that he has plenty of money left to set aside this month for his family to use on education or health expenses.
+
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
* [Documentation](contributors-guide/documentation.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
-* [Mojaloop Background](mojaloop-background.md)
+* [Mojaloop Background](mojaloop-background/README.md)
+ * [Level One Principles](mojaloop-background/level-one-principles.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Repositories](mojaloop-technical-overview/repositories.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
+# Mojaloop Background
+
+### Mojaloop Background
+
+Mojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.
+
+Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
+
+With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+
+# Level One Principles
+
+The Level One Project Guide outlines a vision of how an inclusive digital financial services system can work for the benefit of poor people. The underlying design principles of the Guide include:
+
+* A push payment model with immediate funds transfer and same day settlement
+* Open-loop interoperability between providers
+* Adherence to well-defined and adopted international standards
+* Adequate system-wide shared fraud and security protection
+* Efficient and proportional identity and know-your-customer \(KYC\) requirements
+* Meeting or exceeding the convenience, cost and utility of cash
+
+By utilizing an open, digital approach to transactions, and partnering with organizations across the public and private sectors, the Level One Project Guide aims to provide access to a robust, low-cost shared digital financial services infrastructure, sparking innovation from new and existing participants, reducing risk, and generating substantial value for providers, individuals and economies in developing markets. Additional resources have been created to help governments, NGOs and financial service providers successfully implement these changes.
+
The basic idea behind Mojaloop is that we need to connect multiple Digital Finan
The intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
-### Mojaloop Background
-
-Mojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.
-
-Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
-
-With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
-
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
* [Documentation](contributors-guide/documentation.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
+* [Mojaloop Background](mojaloop-background.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Repositories](mojaloop-technical-overview/repositories.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
+# Mojaloop Background
+
+### Mojaloop Background
+
+Mojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.
+
+Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
+
+With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+
The basic idea behind Mojaloop is that we need to connect multiple Digital Finan
The intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
+### Mojaloop Background
+
+Mojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.
+
+Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
+
+With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+
+
+
Mojaloop is open source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.
-The intention is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
+The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
-Mojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.
+* A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
+* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
+* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
-
-With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+The intention for the Mojaloop project is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
See the [Mojaloop Slack Announcements](https://mojaloop.slack.com/messages/CG3MAJZ5J) to find out information on the latest release.
-The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
-
-* A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
-* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
-* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
-
### What's here and what's not
This is free code provided under an [Apache 2.0 license](https://github.com/mojaloop/mojaloop/blob/master/LICENSE.md).
Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
### What is the current release?
-See the [Mojaloop Slack Announcements](https://mojaloop-slack.announcements) to find out information on the latest release.
+See the [Mojaloop Slack Announcements](https://mojaloop.slack.com/messages/CG3MAJZ5J) to find out information on the latest release.
The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
# Mojaloop Overview
-Mojaloop is open-source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.
+Mojaloop is open source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.
The intention is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
# Frequently Asked Questions
+_What is Mojaloop?_ Mojaloop is open-source software for building interoperable digital payments platforms on a national scale. It makes it easy for different kinds of providers to link up their services and deploy low-cost financial services in new markets.
+
+_How does it work?_ Most digital financial providers run on their own networks, which prevents customers who use different services from transacting with each other. Mojaloop functions like a universal switchboard, routing payments securely between all customers, regardless of which network they're on. It consists of three primary layers, each with a specific function: an interoperability layer, which connects bank accounts, mobile money wallets, and merchants in an open loop; a directory service layer, which navigates the different methods that providers use to identify accounts on each side of a transaction; a transactions settlement layer, which makes payments instant and irrevocable; and components which protect against fraud.
+
+_Who is it for?_ There are many components to the code, and everyone either directly or indirectly working with digital financial transactions-fintech developers, bankers, entrepreneurs, startups-is invited to explore and use whatever parts are useful or appealing. The software as a whole is meant to be implemented on a national scale, and so it will be most applicable to mobile money providers, payments associations, central banks, and country regulators.
+
+Developers at fintech and financial services companies can use the code in three ways: adapt the code to the financial services standards for a country, use the code to update their own products and services or create new ones, and improve the code by proposing updates and new versions of it for other users.
+
+For example:
+
+* A central bank may commission the use of the software by their commercial partners to speed up the deployment of a national payment gateway.
+* A major payment processor can use the software to modernize their current offering, to achieve lower transaction costs without major R&D investments.
+* A fintech startup can use the code to understand practically how to comply with interoperable payment APIs.
+* A bank can use the code to modify their internal systems so that they easily interoperate with other payment providers.
+
+_Why does it exist?_ Providers trying to reach developing markets with innovative, low-cost digital financial services have to build everything on their own. This raises costs and segregates services from each other. Mojaloop can be used as a foundation to help build interoperable platforms, lowering costs for providers and allowing them to integrate their services with others in the market.
+
+_Who's behind it?_ Mojaloop was built in collaboration with a group of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [Software Group](http://www.softwaregroup-bg.com/), [ModusBox](http://www.modusbox.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). Mojaloop was created by the Gates Foundation's Mojaloop, which is aimed at leveling the economic playing field by crowding in expertise and resources to build inclusive payment models to benefit the world's poor. It is free to the public as open-source software under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0).
+
+_What platforms does Mojaloop run on?_ The Mojaloop platform was developed for modern cloud-computing environments. Open-source methods and widely used platforms, like Node.js, serve as the foundation layer for Mojaloop. The microservices are packaged in Docker and can be deployed to local hardware or to cloud computing environments like Amazon Web Services or Azure.
+
+_Is it really open-source?_ Yes. All core modules, documentation and white papers are available under a [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0). Mojaloop relies on commonly used open-source software, including node.js, MuleCE, Java and PostgreSQL. Mojaloop also uses the [Interledger Protocol](https://github.com/interledger) to choreograph secure money transfers. The licenses for all of these platforms and their imported dependencies allow for many viable uses of the software.
+
+_How can I contribute to Mojaloop?_ You can contribute by helping us create new functionality on our roadmap or by helping us improve the platform. For our roadmap, go to the [Mojaloop Roadmap](../mojaloop-roadmap.md). We recommend starting with the onboarding guide and sample problem. This has been designed by the team to introduce the core ideas of the platform and software, the build methods, and our process for check-ins.
+
+_What is supported?_ Currently the Central ledger components are supported by the team. The DFSP components are outdated and thus the end-to-end environment and full setup is challenging to install.
+
description: Mojaloop Contributors Guide
## How do I contribute?
### \* Review the [Mojaloop Deployment](mojaloop-deployment.md#mojaloop-deployment) Guide
-### \* Review our [Standards](standards.md) document on contributing to our Open Source Project
-### \* Review our [Roadmap](../mojaloop-roadmap.md) and look for issues in the project repository requesting contributor Help.
+
+### \* Review [Standards](standards.md) on contributing to our Open Source Project
+
+### \* Review the [Roadmap](../mojaloop-roadmap.md) and look for issues in the project repository requesting contributor Help.
## What work is needed?
# Mojaloop Roadmap
-## Functional Epics
+## Mojaloop Roadmap
+
+### Functional Epics
+
* Event Logging Framework: Support operational reporting and auditing of processing
* Error Handling Framework: Consistent reporting in line with specification and support operational auditing
* API Gateway: Provide role, policy-based access, security, abstraction, throttling & control, identity management
* Fraud & Risk Management System: Provide support for a fraud and risk management system
* Forensic Logging: Support forensic logging to support auditing and reporting
* Reporting API: Provide an API for reporting
-
-## Operational Epics
+
+### Operational Epics
+
* Testing Framework: Provide a framework for automated regression, functional and other testing to ensure quality
* Performance Improvements: Provide a framework for automated regression, functional and other testing to ensure quality
* ELK framework & logging: Provide framework or dashboards for Operational support, Debugging and Resolving issues
* DevOps: Provide flexibility, dynamism in deployments, improve monitoring and reliability mechanisms
* Rules Engine: Provide a framework to enforce, implement Business, Scheme rules
-## Non-Functional Epics
+### Non-Functional Epics
+
* Deprecate Postgres: Avoid usage of multiple databases to improve supportability and maintenance and move to MySQL
* Security & Threat Modeling: Address security vulnerabilities, issues and provide a report on status of the System's security so that they can be addressed
* Documentation: Update documentation to support adoption by community, for labs, deployment by various partners
-* API-Led Design: Refactor central services so that schema validation, paths can be addressed thoroughly (automatically) and decrease maintenance, development effort (for those services don't already follow this)
+* API-Led Design: Refactor central services so that schema validation, paths can be addressed thoroughly \(automatically\) and decrease maintenance, development effort \(for those services don't already follow this\)
* API-led connectivity is a methodical way to connect data to applications through reusable and purposeful APIs.
+### Detailed Roadmap Items - \(Exported from StoriesOnBoard\)
+
+| Activity | Task | Subtask | Subtask description | Status | Estimation | Release | Personas |
+| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
+| High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green. | Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray | ? A third release with focus on Security, Auditing, Operational readiness | Includes features/functionality missing from PI5 and PI6 | Todo | | | Useful Resources |
+| High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green. | Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray | Release 5.0.0 - First version after the MVP with critical bug fixes and key features | First version after the MVP with critical bug fixes and features focusing on functionality needed with inputs from early adopters | Todo | | PI-5 | Useful Resources |
+| High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green. | Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray | Release 6.0.0 - A second release after the MVP with key features, streamlined deployment, on-boarding and monitoring capabilities | | Todo | | PI-6 | Useful Resources |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Design provisioning & management of FSP onboarding | Description: End state: | Ready | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Identify Approaches & Technologies for Management & Balancing of FSPs PoC | | Ready | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | PoC for Management & Balancing of FSPs on Test Handlers to determine the best approach | | Ready | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Assess Performance capabilities, impact of the PoC | | Todo | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Management & Balancing of FSPs for High-Availability and On-boarding for non-FSP Specific Handlers | | Ready | | PI-6 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Management & Balancing of FSPs for High-Availability and On-boarding for FSP Specific Handlers | | Ready | | PI-6 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | QA, testing - validation | | Ready | | PI-6 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: API Gateway | Gateway, Developer Portal | Access control policies | | Todo | | | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Apply validation controls at the API Gateway level | | Todo | | | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Confirm the technology for API Gateway, Developer Portal | Confirm that WSO2 is the way to go or if there's a better alternative \(better suited for Open Source\) | Todo | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Design solution with WSO2 API Gateway | **Security**: 1. Inbound rules 1. Outbound rules 1. Headers validation 1. Throttling | Todo | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Setup API Gateway using WSO2 - Infrastructure | | Ready | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Integration with Switch services \(ml-api-adapter\) | | Ready | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Provide Authentication | | Todo | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Developer Portal \(FSPs, Hub Operator\) | | Ready | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Developer on-boarding | | Todo | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | QA, Testing | | Todo | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: DevOps, CI/CD | Deployment automation and Lab work | Making existing helm charts more maintainable & manageable | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Deployment automation and Lab work | Automate Lab Setup - chooses services \(things like Gateway, etc\) | Possibly using something like Terraform, Vagrant | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Deployment automation and Lab work | Validate Lab envt setup using a test framework | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Incorporating the API Gateway into the deployment process | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Incorporating the API Gateway into the CI/CD pipeline | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Automate deployment of artifacts as part of CI/CD pipeline | Currently the artifacts are published to dockerhub/npm repos based on the outcome of the testing phases but the deployment fails as quite a bit of automation is needed. This involves updating helm charts dynamically, values files and other such resources. This would tremendously reduce the amount of time involved in getting out a deployment after a release. Currently we do the deployment manually \(which is not that bad\) but this can be eliminated. | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Integrate Contract, Interface and Functional Tests in CI/CD Pipeline | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | Enable health checks to report holistically | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | Support for Zipkin | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | ELK: Support for Alerts, Notifications | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | Integrating ELK with Event Logging Framework, etc | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | ELK Dashboards for KPIs, etc | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: Quality Assurance, Testing | Testing, QA | Standardized simulator \(mock FSPs\) to support automated testing | 1. Simulators that dynamically generate conditions, fulfilments etc as part of the end-to-end proccess 1. Include error end-points \(addressed in another item\) 1. Perform validations 1. Rework the simulator to generate the end-points based on the Swagger \(to easily validate\): API first approach | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Automated Functional Tests - document coverage | | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Periodic comprehensive functional testing on deployments | | Todo | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Automated Integration Tests | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Automated Contract Tests | Contract - meaning the API Specification itself.. Automated tests to ensure the Switch adheres to the API/Swagger specification, example, headers, schema, etc This ensures the users of the System that the implementation conforms to the API Specification. | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Update Automated Contract, Integration, Functional Tests | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | QA, Bug Fixes | QA, Bug Fixes | | Ready | | | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | QA, Bug Fixes | Bug Fixes, QA | | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | QA, Bug Fixes | QA, Bug Fixes | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Performance testing & Improvements | | Ready | | | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Performance testing baselining after addition of new features, frameworks | Towards the end of the PI/Sprint | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Automated Performance Tests | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Regular Performance testing as part of CI/CD | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| FR: Settlement Management | Settlements Management | Enhance Alerts and Notifications | | Ready | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Settlements Management | Follow-up items to be confirmed after the OSS Settlements API is drafted | | Todo | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Settlements Management | Handle failed acknowledgements for Settlements | | Ready | 8.00 | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Settlements Management | Settlement Reconciliation Reports | | Ready | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Identification of Framework for reporting | | Todo | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Identify data sets that can be queried - Transactions | | Ready | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Settlements reporting format decisions | | Todo | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Identify data sets that can be queried - Transfers | | Ready | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Standardize query API | | Ready | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Implementation of reporting functionality | | Todo | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | QA, testing | | Todo | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Scaling guidelines for deployment | | Todo | | | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Guidelines for optimal performance | | Todo | | | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | HA guidelines for deployment | | Todo | | | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Recommended deployment topologies | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Security guidelines for implementation, deployment | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Documentation - clarity, remove ambiguity. Review | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Guidelines for cloud/on-prem providers | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for Hub Operators | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for OSS contributors | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for FSP and System Integrators | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for OSS contributors - 2 | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for Hub Operators - 2 | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Event Logging | Event Logging Framework | Central processing of events and raising alerts/alarms/errors | Extend existing functionality **Interesting Events that need to be produced/captured**: 1. Up/down events for services, 1. Threshold on number of occurrences 1. Dashboards - Thresholds - CPU utilization, Disk space, configurable 1. Error events in services 1. Infrastructure events \(Up/Down\). 1. Connectivity events \(Connect/Disconnect\) 1. General service events \(started, halted, etc\) 1. Mojaloop errors based on the specification **Business**: 1. Thresholds 1. Limits \(NDC\) 1. Position events 1. Settlement events \(settling, window closure, etc\) **Things to take care of**: 1. Mode of notifications 1. Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops 1. Duration of persistence of logs, etc \(especially commercial/business data\) - comply with guidelines/ standards. 1. HA events and assess reliability - How do we measure the uptime of the system and availability | Todo | | | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Recommended usage of the alerting system | | Todo | | | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Design event logging Framework | Framework for producing & capturing Event logs that can be used for monitoring **Interesting Events that need to be produced/captured**: - Up/down events for services, - Threshold on number of occurrences - Dashboards - Thresholds - CPU utilization, Disk space, configurable - Error events in services - Infrastructure events \(Up/Down\). - Connectivity events \(Connect/Disconnect\) - General service events \(started, halted, etc\) - Mojaloop errors based on the specification **Business**: - Thresholds - Limits \(NDC\) - Position events - Settlement events \(settling, window closure, etc\) **Things to take care of**: - Mode of notifications - Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops - Duration of persistence of logs, etc \(especially commercial/business data\) - comply with guidelines/ standards. - HA events and assess reliability - How do we measure the uptime of the system and availability | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Implement Common Library for events | | Ready | 15.00 | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Implementation for producing & capturing Event logs that can be used for monitoring | Framework for producing & capturing Event logs that can be used for monitoring **Interesting Events that need to be produced/captured**: 1. Up/down events for services, 1. Threshold on number of occurrences 1. Dashboards - Thresholds - CPU utilization, Disk space, configurable 1. Error events in services 1. Infrastructure events \(Up/Down\). 1. Connectivity events \(Connect/Disconnect\) 1. General service events \(started, halted, etc\) 1. Mojaloop errors based on the specification **Business**: 1. Thresholds 1. Limits \(NDC\) 1. Position events 1. Settlement events \(settling, window closure, etc\) **Things to take care of**: 1. Mode of notifications 1. Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops 1. Duration of persistence of logs, etc \(especially commercial/business data\) - comply with guidelines/ standards. 1. HA events and assess reliability - How do we measure the uptime of the system and availability | Ready | 8.00 | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Testing the common library, framework for producing, capturing events | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Logging standards, implement & standardize | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Changes to logging to enhance traceability | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Design and identify dashboards needed for monitoring | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Operational Dashboards for monitoring specific events end-to-end | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Operational Dashboards for monitoring alerts/alarms/errors | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Testing various dashboards | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Error Handling | Implementing error endpoints | Design solution for supporting error endpoints for transfers | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Implementing error endpoints | Implement support for error endpoints for transfers | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Implementing error endpoints | Updating simulators to support error endpoints | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Implementing error endpoints | Support for endpoints for other resources | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Implementing error endpoints | Enhance notification mechanism to handle notification issues, perform retries | Retries according to configuration that can be set | Todo | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Publish an event to be consumed by the event framework | | Ready | | | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Design an error handling framework for a standardized way of returning results of execution | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Design error mapping for the error handling framework | | Todo | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Common library for error framework | | Ready | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Implement the error handling framework | | Ready | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| FR: Bulk Payments | Bulk Payments Design | Design for Bulk Payments: version - 1, based on the ML Spec | | Ready | | PI-5 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Design | Design for Bulk Payments: version - 2 | | Ready | | PI-5 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Design | Finalize design for Bulk Payments | | Todo | | PI-6 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources: bulkTransfers | | Todo | | | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Bulk payments error handling | | Todo | | | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Testing Bulk Payments | | Todo | | | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources for bulk look-up, etc | | Todo | | PI-5 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources: bulkQuotes | | Todo | | PI-6 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources: bulkTransfers - PoC | | Ready | | PI-6 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Forensic Logging | Forensic Logging | Migrate central-kms from scala to node and associated DB to the selected type | | Ready | | | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Forensic Logging | Revisit/review Forensic Logging Architecture | | Ready | | PI-5 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Forensic Logging | Migrate from postgres to selected persistent store \(mysql/kafka\) | | Ready | | PI-5 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Forensic Logging | Sidecars to periodically validate the connected services | | Todo | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Forensic Logging | Ensure algorithm and encryption functionality work as expected | | Ready | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Auditing | Define/gather auditing requirements | | Todo | | PI-5 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Auditing | Implement auditing events or logging capabilities in components | | Todo | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Auditing | Use for auditing \(test by generating reports\) | | Ready | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Auditing | Integration with Event Handling / ELK ? | | Ready | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Central Directory \(account lookup\) | central directory alignment to ML Spec with existing capabilities | Design solution for integration with current services | | Ready | | PI-5 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory \(account lookup\) | central directory alignment to ML Spec with existing capabilities | Migrate code from Mowali and replace the existing legacy code | | Ready | | PI-5 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory \(account lookup\) | central directory alignment to ML Spec with existing capabilities | QA, testing for lookup, integration with overall use cases | | Todo | | PI-5 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory \(account lookup\) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | Support for multiple identifiers? | | Todo | | | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory \(account lookup\) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | Design solution for Merchant registries | - As an FSP, I want to know the FSP that a Merchant belongs to - As an FSP, I want to register a new Merchant and assign a unique TILL number - As a Merchant, I want to be able to request a DFSP to assign me a Merchant number \(design\) - As a Switch, I should maintain a record of mapping between FSPs and Merchant IDs | Todo | | PI-6 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory \(account lookup\) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | Implementing solution for Merchant payments | | Todo | | PI-6 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory \(account lookup\) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | QA, testing for lookup, integration with overall merchant use cases | | Todo | | PI-6 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | Design solution and identify pre-requisites for Merchant payments | | Todo | | PI-5 | DFSP Switch DFSP System Integrators |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | Implement Resources: transactionRequests, authorizations | | Ready | | PI-5 | DFSP Switch DFSP System Integrators |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | Implement error endpoints and related functionality | | Todo | | PI-5 | DFSP Switch DFSP System Integrators |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | 'Merchant request to pay' is supported, released | | Todo | | PI-5 | DFSP Switch DFSP System Integrators |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | QA, testing on the feature | | Todo | | PI-6 | DFSP Switch DFSP System Integrators |
+| NFR \(new\): Community Support | Supporting community regarding deployment, Mojaloop Specification | Update documentation to support community | | Todo | | PI-5 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
+| NFR \(new\): Community Support | Supporting community regarding deployment, Mojaloop Specification | Provide support to community requests on deployment | | Todo | | PI-5 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
+| NFR \(new\): Community Support | Supporting community regarding deployment, Mojaloop Specification | Provide support to community requests regarding the Spec | | Todo | | PI-5 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
+| NFR \(new\): Community Support | Supporting community regarding deployment, Mojaloop Specification | Provide an FAQ/Wiki section for deployment and Spec questions | | Todo | | PI-6 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
+| Others \(not covered\) / Hardening \(Cleanup, Refactoring, etc\) | Formalizing the Operations/Admin API | Formalize the Admin/operations API | | Ready | | PI-5 | |
+| Others \(not covered\) / Hardening \(Cleanup, Refactoring, etc\) | Formalizing the Operations/Admin API | Provide features to manage FSPs | | Ready | | PI-6 | |
+| Others \(not covered\) / Hardening \(Cleanup, Refactoring, etc\) | Formalizing the Operations/Admin API | central hub with UI ? | | Ready | | PI-6 | |
+| Others \(not covered\) / Hardening \(Cleanup, Refactoring, etc\) | FRMS | Investigate capabilities & features needed | | Ready | | PI-6 | |
+| Others \(not covered\) / Hardening \(Cleanup, Refactoring, etc\) | FRMS | Prioritizing Rules/Policies to implement | | Ready | | PI-6 | |
+| Others \(not covered\) / Hardening \(Cleanup, Refactoring, etc\) | Refactoring: API Led Design, Implementation for central services | Designing all central services to support API Led Design | | Ready | | PI-5 | |
+| Others \(not covered\) / Hardening \(Cleanup, Refactoring, etc\) | Refactoring: API Led Design, Implementation for central services | Refactoring for ml-api-adapter | | Ready | | PI-6 | |
+| Others \(not covered\) / Hardening \(Cleanup, Refactoring, etc\) | Refactoring: API Led Design, Implementation for central services | Refactoring for central services | | Ready | | PI-6 | |
+| Security | | | | | | | Hub Security, Risk and Compliance Team DFSP Switch |
+| Cross currency | Account Lookup Service | Change in Currency | ALS naming convention for routing - if moving from MSISDN only Identify currency and impact to Standard Transfers | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Quotation | Regulatory Data | KYC Data Need to clarify - including understanding Multi Currency What data needs to be passed - via DFSPs and through CCP How is that data passed and validated? Impact on timeouts Rules and Design | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Quotation | FX Rate Management | | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Quotation | Fees consolidation | How are fees passed along the chain? Not already in the quote Is there a need for transparency? If not how and where are all the fees calculated and brought to common currency? | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Transfer | Limit Management | Velocity Rules for sender and receiver Regulatory data required to confirm | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Transfer | Sequencing of Position management and fund movement | As now 4 \(+\) positions affected control financial risk | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Transfer | Rollback | How does it work - design | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Transfer | Timeout | | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Settlement | Reporting of Transfer | Managing the trail of the hops for the CCP and regulatory for Send and Receive | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Documentation | | | | | | | BMGF DFSP Useful Resources |
+| FRMS | | | | | | | Hub Security, Risk and Compliance Team DFSP |
+| Lab for FSPs, deployment tools | | | | | | | BMGF |
+| Cross-network payments | | | | | | | |
+| Payment Hub | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+
+## Beyond Phase 3
-## Detailed Roadmap Items - (Exported from StoriesOnBoard)
-| Activity | Task | Subtask | Subtask description | Status | Estimation | Release | Personas |
-|---------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------|------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------|
-| High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green. | Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray | ? A third release with focus on Security, Auditing, Operational readiness | Includes features/functionality missing from PI5 and PI6 | Todo | | | Useful Resources |
-| High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green. | Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray | Release 5.0.0 - First version after the MVP with critical bug fixes and key features | First version after the MVP with critical bug fixes and features focusing on functionality needed with inputs from early adopters | Todo | | PI-5 | Useful Resources |
-| High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green. | Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray | Release 6.0.0 - A second release after the MVP with key features, streamlined deployment, on-boarding and monitoring capabilities | | Todo | | PI-6 | Useful Resources |
-| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Design provisioning & management of FSP onboarding | Description: End state: | Ready | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
-| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Identify Approaches & Technologies for Management & Balancing of FSPs PoC | | Ready | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
-| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | PoC for Management & Balancing of FSPs on Test Handlers to determine the best approach | | Ready | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
-| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Assess Performance capabilities, impact of the PoC | | Todo | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
-| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Management & Balancing of FSPs for High-Availability and On-boarding for non-FSP Specific Handlers | | Ready | | PI-6 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
-| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Management & Balancing of FSPs for High-Availability and On-boarding for FSP Specific Handlers | | Ready | | PI-6 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
-| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | QA, testing - validation | | Ready | | PI-6 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
-| NFR: API Gateway | Gateway, Developer Portal | Access control policies | | Todo | | | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: API Gateway | Gateway, Developer Portal | Apply validation controls at the API Gateway level | | Todo | | | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: API Gateway | Gateway, Developer Portal | Confirm the technology for API Gateway, Developer Portal | Confirm that WSO2 is the way to go or if there's a better alternative (better suited for Open Source) | Todo | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: API Gateway | Gateway, Developer Portal | Design solution with WSO2 API Gateway | **Security**: 1. Inbound rules 1. Outbound rules 1. Headers validation 1. Throttling | Todo | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: API Gateway | Gateway, Developer Portal | Setup API Gateway using WSO2 - Infrastructure | | Ready | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: API Gateway | Gateway, Developer Portal | Integration with Switch services (ml-api-adapter) | | Ready | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: API Gateway | Gateway, Developer Portal | Provide Authentication | | Todo | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: API Gateway | Gateway, Developer Portal | Developer Portal (FSPs, Hub Operator) | | Ready | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: API Gateway | Gateway, Developer Portal | Developer on-boarding | | Todo | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: API Gateway | Gateway, Developer Portal | QA, Testing | | Todo | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: DevOps, CI/CD | Deployment automation and Lab work | Making existing helm charts more maintainable & manageable | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | Deployment automation and Lab work | Automate Lab Setup - chooses services (things like Gateway, etc) | Possibly using something like Terraform, Vagrant | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | Deployment automation and Lab work | Validate Lab envt setup using a test framework | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Incorporating the API Gateway into the deployment process | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Incorporating the API Gateway into the CI/CD pipeline | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Automate deployment of artifacts as part of CI/CD pipeline | Currently the artifacts are published to dockerhub/npm repos based on the outcome of the testing phases but the deployment fails as quite a bit of automation is needed. This involves updating helm charts dynamically, values files and other such resources. This would tremendously reduce the amount of time involved in getting out a deployment after a release. Currently we do the deployment manually (which is not that bad) but this can be eliminated. | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Integrate Contract, Interface and Functional Tests in CI/CD Pipeline | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | Monitoring, Management of resources | Enable health checks to report holistically | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | Monitoring, Management of resources | Support for Zipkin | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | Monitoring, Management of resources | ELK: Support for Alerts, Notifications | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | Monitoring, Management of resources | Integrating ELK with Event Logging Framework, etc | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: DevOps, CI/CD | Monitoring, Management of resources | ELK Dashboards for KPIs, etc | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
-| NFR: Quality Assurance, Testing | Testing, QA | Standardized simulator (mock FSPs) to support automated testing | 1. Simulators that dynamically generate conditions, fulfilments etc as part of the end-to-end proccess 1. Include error end-points (addressed in another item) 1. Perform validations 1. Rework the simulator to generate the end-points based on the Swagger (to easily validate): API first approach | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | Testing, QA | Automated Functional Tests - document coverage | | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | Testing, QA | Periodic comprehensive functional testing on deployments | | Todo | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | Testing, QA | Automated Integration Tests | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | Testing, QA | Automated Contract Tests | Contract - meaning the API Specification itself.. Automated tests to ensure the Switch adheres to the API/Swagger specification, example, headers, schema, etc This ensures the users of the System that the implementation conforms to the API Specification. | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | Testing, QA | Update Automated Contract, Integration, Functional Tests | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | QA, Bug Fixes | QA, Bug Fixes | | Ready | | | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | QA, Bug Fixes | Bug Fixes, QA | | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | QA, Bug Fixes | QA, Bug Fixes | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Performance testing & Improvements | | Ready | | | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Performance testing baselining after addition of new features, frameworks | Towards the end of the PI/Sprint | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Automated Performance Tests | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Regular Performance testing as part of CI/CD | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
-| FR: Settlement Management | Settlements Management | Enhance Alerts and Notifications | | Ready | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Settlements Management | Follow-up items to be confirmed after the OSS Settlements API is drafted | | Todo | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Settlements Management | Handle failed acknowledgements for Settlements | | Ready | 8.00 | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Settlements Management | Settlement Reconciliation Reports | | Ready | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Reporting API for FSP Consumption | Identification of Framework for reporting | | Todo | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Reporting API for FSP Consumption | Identify data sets that can be queried - Transactions | | Ready | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Reporting API for FSP Consumption | Settlements reporting format decisions | | Todo | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Reporting API for FSP Consumption | Identify data sets that can be queried - Transfers | | Ready | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Reporting API for FSP Consumption | Standardize query API | | Ready | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Reporting API for FSP Consumption | Implementation of reporting functionality | | Todo | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
-| FR: Settlement Management | Reporting API for FSP Consumption | QA, testing | | Todo | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
-| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Scaling guidelines for deployment | | Todo | | | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Guidelines for optimal performance | | Todo | | | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | HA guidelines for deployment | | Todo | | | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Recommended deployment topologies | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Security guidelines for implementation, deployment | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Documentation - clarity, remove ambiguity. Review | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Guidelines for cloud/on-prem providers | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Workshops | Workshops for Hub Operators | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Workshops | Workshops for OSS contributors | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Workshops | Workshops for FSP and System Integrators | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Workshops | Workshops for OSS contributors - 2 | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Implementation Topology Guidelines | Workshops | Workshops for Hub Operators - 2 | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
-| NFR: Event Logging | Event Logging Framework | Central processing of events and raising alerts/alarms/errors | Extend existing functionality **Interesting Events that need to be produced/captured**: 1. Up/down events for services, 1. Threshold on number of occurrences 1. Dashboards - Thresholds - CPU utilization, Disk space, configurable 1. Error events in services 1. Infrastructure events (Up/Down). 1. Connectivity events (Connect/Disconnect) 1. General service events (started, halted, etc) 1. Mojaloop errors based on the specification **Business**: 1. Thresholds 1. Limits (NDC) 1. Position events 1. Settlement events (settling, window closure, etc) **Things to take care of**: 1. Mode of notifications 1. Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops 1. Duration of persistence of logs, etc (especially commercial/business data) - comply with guidelines/ standards. 1. HA events and assess reliability - How do we measure the uptime of the system and availability | Todo | | | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Event Logging Framework | Recommended usage of the alerting system | | Todo | | | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Event Logging Framework | Design event logging Framework | Framework for producing & capturing Event logs that can be used for monitoring **Interesting Events that need to be produced/captured**: - Up/down events for services, - Threshold on number of occurrences - Dashboards - Thresholds - CPU utilization, Disk space, configurable - Error events in services - Infrastructure events (Up/Down). - Connectivity events (Connect/Disconnect) - General service events (started, halted, etc) - Mojaloop errors based on the specification **Business**: - Thresholds - Limits (NDC) - Position events - Settlement events (settling, window closure, etc) **Things to take care of**: - Mode of notifications - Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops - Duration of persistence of logs, etc (especially commercial/business data) - comply with guidelines/ standards. - HA events and assess reliability - How do we measure the uptime of the system and availability | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Event Logging Framework | Implement Common Library for events | | Ready | 15.00 | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Event Logging Framework | Implementation for producing & capturing Event logs that can be used for monitoring | Framework for producing & capturing Event logs that can be used for monitoring **Interesting Events that need to be produced/captured**: 1. Up/down events for services, 1. Threshold on number of occurrences 1. Dashboards - Thresholds - CPU utilization, Disk space, configurable 1. Error events in services 1. Infrastructure events (Up/Down). 1. Connectivity events (Connect/Disconnect) 1. General service events (started, halted, etc) 1. Mojaloop errors based on the specification **Business**: 1. Thresholds 1. Limits (NDC) 1. Position events 1. Settlement events (settling, window closure, etc) **Things to take care of**: 1. Mode of notifications 1. Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops 1. Duration of persistence of logs, etc (especially commercial/business data) - comply with guidelines/ standards. 1. HA events and assess reliability - How do we measure the uptime of the system and availability | Ready | 8.00 | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Event Logging Framework | Testing the common library, framework for producing, capturing events | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Dashboards for Monitoring | Logging standards, implement & standardize | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Dashboards for Monitoring | Changes to logging to enhance traceability | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Dashboards for Monitoring | Design and identify dashboards needed for monitoring | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Dashboards for Monitoring | Operational Dashboards for monitoring specific events end-to-end | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Dashboards for Monitoring | Operational Dashboards for monitoring alerts/alarms/errors | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Event Logging | Dashboards for Monitoring | Testing various dashboards | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
-| NFR: Error Handling | Implementing error endpoints | Design solution for supporting error endpoints for transfers | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| NFR: Error Handling | Implementing error endpoints | Implement support for error endpoints for transfers | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| NFR: Error Handling | Implementing error endpoints | Updating simulators to support error endpoints | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| NFR: Error Handling | Implementing error endpoints | Support for endpoints for other resources | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| NFR: Error Handling | Implementing error endpoints | Enhance notification mechanism to handle notification issues, perform retries | Retries according to configuration that can be set | Todo | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| NFR: Error Handling | Error Handling Framework | Publish an event to be consumed by the event framework | | Ready | | | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| NFR: Error Handling | Error Handling Framework | Design an error handling framework for a standardized way of returning results of execution | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| NFR: Error Handling | Error Handling Framework | Design error mapping for the error handling framework | | Todo | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| NFR: Error Handling | Error Handling Framework | Common library for error framework | | Ready | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| NFR: Error Handling | Error Handling Framework | Implement the error handling framework | | Ready | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
-| FR: Bulk Payments | Bulk Payments Design | Design for Bulk Payments: version - 1, based on the ML Spec | | Ready | | PI-5 | DFSP Switch DFSP System Integrators Identity Oracles |
-| FR: Bulk Payments | Bulk Payments Design | Design for Bulk Payments: version - 2 | | Ready | | PI-5 | DFSP Switch DFSP System Integrators Identity Oracles |
-| FR: Bulk Payments | Bulk Payments Design | Finalize design for Bulk Payments | | Todo | | PI-6 | DFSP Switch DFSP System Integrators Identity Oracles |
-| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources: bulkTransfers | | Todo | | | DFSP Switch DFSP System Integrators Identity Oracles |
-| FR: Bulk Payments | Bulk Payments Implementation | Bulk payments error handling | | Todo | | | DFSP Switch DFSP System Integrators Identity Oracles |
-| FR: Bulk Payments | Bulk Payments Implementation | Testing Bulk Payments | | Todo | | | DFSP Switch DFSP System Integrators Identity Oracles |
-| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources for bulk look-up, etc | | Todo | | PI-5 | DFSP Switch DFSP System Integrators Identity Oracles |
-| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources: bulkQuotes | | Todo | | PI-6 | DFSP Switch DFSP System Integrators Identity Oracles |
-| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources: bulkTransfers - PoC | | Ready | | PI-6 | DFSP Switch DFSP System Integrators Identity Oracles |
-| FR: Forensic Logging | Forensic Logging | Migrate central-kms from scala to node and associated DB to the selected type | | Ready | | | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
-| FR: Forensic Logging | Forensic Logging | Revisit/review Forensic Logging Architecture | | Ready | | PI-5 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
-| FR: Forensic Logging | Forensic Logging | Migrate from postgres to selected persistent store (mysql/kafka) | | Ready | | PI-5 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
-| FR: Forensic Logging | Forensic Logging | Sidecars to periodically validate the connected services | | Todo | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
-| FR: Forensic Logging | Forensic Logging | Ensure algorithm and encryption functionality work as expected | | Ready | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
-| FR: Forensic Logging | Auditing | Define/gather auditing requirements | | Todo | | PI-5 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
-| FR: Forensic Logging | Auditing | Implement auditing events or logging capabilities in components | | Todo | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
-| FR: Forensic Logging | Auditing | Use for auditing (test by generating reports) | | Ready | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
-| FR: Forensic Logging | Auditing | Integration with Event Handling / ELK ? | | Ready | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
-| FR: Central Directory (account lookup) | central directory alignment to ML Spec with existing capabilities | Design solution for integration with current services | | Ready | | PI-5 | DFSP DFSP System Integrators Switch Identity Oracles |
-| FR: Central Directory (account lookup) | central directory alignment to ML Spec with existing capabilities | Migrate code from Mowali and replace the existing legacy code | | Ready | | PI-5 | DFSP DFSP System Integrators Switch Identity Oracles |
-| FR: Central Directory (account lookup) | central directory alignment to ML Spec with existing capabilities | QA, testing for lookup, integration with overall use cases | | Todo | | PI-5 | DFSP DFSP System Integrators Switch Identity Oracles |
-| FR: Central Directory (account lookup) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | Support for multiple identifiers? | | Todo | | | DFSP DFSP System Integrators Switch Identity Oracles |
-| FR: Central Directory (account lookup) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | Design solution for Merchant registries | - As an FSP, I want to know the FSP that a Merchant belongs to - As an FSP, I want to register a new Merchant and assign a unique TILL number - As a Merchant, I want to be able to request a DFSP to assign me a Merchant number (design) - As a Switch, I should maintain a record of mapping between FSPs and Merchant IDs | Todo | | PI-6 | DFSP DFSP System Integrators Switch Identity Oracles |
-| FR: Central Directory (account lookup) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | Implementing solution for Merchant payments | | Todo | | PI-6 | DFSP DFSP System Integrators Switch Identity Oracles |
-| FR: Central Directory (account lookup) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | QA, testing for lookup, integration with overall merchant use cases | | Todo | | PI-6 | DFSP DFSP System Integrators Switch Identity Oracles |
-| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | Design solution and identify pre-requisites for Merchant payments | | Todo | | PI-5 | DFSP Switch DFSP System Integrators |
-| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | Implement Resources: transactionRequests, authorizations | | Ready | | PI-5 | DFSP Switch DFSP System Integrators |
-| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | Implement error endpoints and related functionality | | Todo | | PI-5 | DFSP Switch DFSP System Integrators |
-| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | 'Merchant request to pay' is supported, released | | Todo | | PI-5 | DFSP Switch DFSP System Integrators |
-| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | QA, testing on the feature | | Todo | | PI-6 | DFSP Switch DFSP System Integrators |
-| NFR (new): Community Support | Supporting community regarding deployment, Mojaloop Specification | Update documentation to support community | | Todo | | PI-5 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
-| NFR (new): Community Support | Supporting community regarding deployment, Mojaloop Specification | Provide support to community requests on deployment | | Todo | | PI-5 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
-| NFR (new): Community Support | Supporting community regarding deployment, Mojaloop Specification | Provide support to community requests regarding the Spec | | Todo | | PI-5 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
-| NFR (new): Community Support | Supporting community regarding deployment, Mojaloop Specification | Provide an FAQ/Wiki section for deployment and Spec questions | | Todo | | PI-6 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
-| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Formalizing the Operations/Admin API | Formalize the Admin/operations API | | Ready | | PI-5 | |
-| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Formalizing the Operations/Admin API | Provide features to manage FSPs | | Ready | | PI-6 | |
-| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Formalizing the Operations/Admin API | central hub with UI ? | | Ready | | PI-6 | |
-| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | FRMS | Investigate capabilities & features needed | | Ready | | PI-6 | |
-| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | FRMS | Prioritizing Rules/Policies to implement | | Ready | | PI-6 | |
-| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Refactoring: API Led Design, Implementation for central services | Designing all central services to support API Led Design | | Ready | | PI-5 | |
-| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Refactoring: API Led Design, Implementation for central services | Refactoring for ml-api-adapter | | Ready | | PI-6 | |
-| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Refactoring: API Led Design, Implementation for central services | Refactoring for central services | | Ready | | PI-6 | |
-| Security | | | | | | | Hub Security, Risk and Compliance Team DFSP Switch |
-| Cross currency | Account Lookup Service | Change in Currency | ALS naming convention for routing - if moving from MSISDN only Identify currency and impact to Standard Transfers | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
-| Cross currency | Quotation | Regulatory Data | KYC Data Need to clarify - including understanding Multi Currency What data needs to be passed - via DFSPs and through CCP How is that data passed and validated? Impact on timeouts Rules and Design | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
-| Cross currency | Quotation | FX Rate Management | | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
-| Cross currency | Quotation | Fees consolidation | How are fees passed along the chain? Not already in the quote Is there a need for transparency? If not how and where are all the fees calculated and brought to common currency? | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
-| Cross currency | Transfer | Limit Management | Velocity Rules for sender and receiver Regulatory data required to confirm | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
-| Cross currency | Transfer | Sequencing of Position management and fund movement | As now 4 (+) positions affected control financial risk | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
-| Cross currency | Transfer | Rollback | How does it work - design | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
-| Cross currency | Transfer | Timeout | | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
-| Cross currency | Settlement | Reporting of Transfer | Managing the trail of the hops for the CCP and regulatory for Send and Receive | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
-| Documentation | | | | | | | BMGF DFSP Useful Resources |
-| FRMS | | | | | | | Hub Security, Risk and Compliance Team DFSP |
-| Lab for FSPs, deployment tools | | | | | | | BMGF |
-| Cross-network payments | | | | | | | |
-| Payment Hub | | | | | | | |
-| | | | | | | | |
-| | | | | | | | |
-| | | | | | | | |
-| | | | | | | | |
-| | | | | | | | |
-| | | | | | | | |
-| | | | | | | | |
-| | | | | | | | |
-| | | | | | | | |
-
-
-# Beyond Phase 3
Below is a list of larger initiatives and epics by area that will help to further develop the Mojaloop project. Some of these have been entered as epics or stories, but most are still in the "concept" phase.
-## Functional Epics
+### Functional Epics
+
* Native Implementation P2P: Implementation of resources to support Payee initiated and other Use Cases from the Specification, along with supporting P2P Use case completely
* Native Implementation Payee: Implementation of resources to support Payee initiated transactions and ones that involve OTPs
* Bulk Payments: Design & Implementation of resources to support Bulk Payments
-## Central Services
+### Central Services
+
* Directory Interoperability
* Multi-currency and schemes
* Enforcing Currency configurations
Below is a list of larger initiatives and epics by area that will help to furthe
* DSP Management
* Stopping/Pausing a DFSP
* boarding protocol
-
-## DFSP/Account Management
+
+### DFSP/Account Management
+
* Agent Network
* NFCC identity merchant
* Persistent merchant ID
Below is a list of larger initiatives and epics by area that will help to furthe
* Password requirements
* Hold/Restart account
-## Security
+### Security
+
* Central certificate service
* Implement fee quote transfer service in the center
* Prevent user guessing from rogue DFSPs
* Preferred authorizations
-
-## Market Deployment
-* Integration with major mobile money vendors in Africa (PDP initiative)
-
-## CI/CD & Testing
+
+### Market Deployment
+
+* Integration with major mobile money vendors in Africa \(PDP initiative\)
+
+### CI/CD & Testing
+
* Implement auto deployment to test environment
* Automatically run acceptance tests in test environment as part of build/deploy
* Automate bulk import tests
* Forensic log test
* Account management test
+
# Mojaloop Roadmap
+## Functional Epics
+* Event Logging Framework: Support operational reporting and auditing of processing
+* Error Handling Framework: Consistent reporting in line with specification and support operational auditing
+* API Gateway: Provide role, policy-based access, security, abstraction, throttling & control, identity management
+* Endpoints for P2P, Merchant: Provide endpoints to support P2P and Merchant payments
+* Settlements: Complete settlements process to handle failures and reconciliation positions
+* Central directory/Account lookup service: Provide native implementation for ALS to confirm the API specification to provide user lookup
+* Fraud & Risk Management System: Provide support for a fraud and risk management system
+* Forensic Logging: Support forensic logging to support auditing and reporting
+* Reporting API: Provide an API for reporting
+
+## Operational Epics
+* Testing Framework: Provide a framework for automated regression, functional and other testing to ensure quality
+* Performance Improvements: Provide a framework for automated regression, functional and other testing to ensure quality
+* ELK framework & logging: Provide framework or dashboards for Operational support, Debugging and Resolving issues
+* DevOps: Provide flexibility, dynamism in deployments, improve monitoring and reliability mechanisms
+* Rules Engine: Provide a framework to enforce, implement Business, Scheme rules
+
+## Non-Functional Epics
+* Deprecate Postgres: Avoid usage of multiple databases to improve supportability and maintenance and move to MySQL
+* Security & Threat Modeling: Address security vulnerabilities, issues and provide a report on status of the System's security so that they can be addressed
+* Documentation: Update documentation to support adoption by community, for labs, deployment by various partners
+* API-Led Design: Refactor central services so that schema validation, paths can be addressed thoroughly (automatically) and decrease maintenance, development effort (for those services don't already follow this)
+* API-led connectivity is a methodical way to connect data to applications through reusable and purposeful APIs.
+
+
+## Detailed Roadmap Items - (Exported from StoriesOnBoard)
+| Activity | Task | Subtask | Subtask description | Status | Estimation | Release | Personas |
+|---------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------|------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------|
+| High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green. | Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray | ? A third release with focus on Security, Auditing, Operational readiness | Includes features/functionality missing from PI5 and PI6 | Todo | | | Useful Resources |
+| High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green. | Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray | Release 5.0.0 - First version after the MVP with critical bug fixes and key features | First version after the MVP with critical bug fixes and features focusing on functionality needed with inputs from early adopters | Todo | | PI-5 | Useful Resources |
+| High Level Topics - Blue, Epics - Yellow, Releases - Orange. Stories - Green. | Designs/Whitepapers - Pink . Workshops - purple. Not in Scope / needs clarity - Gray | Release 6.0.0 - A second release after the MVP with key features, streamlined deployment, on-boarding and monitoring capabilities | | Todo | | PI-6 | Useful Resources |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Design provisioning & management of FSP onboarding | Description: End state: | Ready | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Identify Approaches & Technologies for Management & Balancing of FSPs PoC | | Ready | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | PoC for Management & Balancing of FSPs on Test Handlers to determine the best approach | | Ready | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Assess Performance capabilities, impact of the PoC | | Todo | | PI-5 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Management & Balancing of FSPs for High-Availability and On-boarding for non-FSP Specific Handlers | | Ready | | PI-6 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | Management & Balancing of FSPs for High-Availability and On-boarding for FSP Specific Handlers | | Ready | | PI-6 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: DFSP Handler Provisioning | The Switch system scales when on-boarding FSPs | QA, testing - validation | | Ready | | PI-6 | Hub Tech Ops Hub Operator DFSP System Integrators DFSP |
+| NFR: API Gateway | Gateway, Developer Portal | Access control policies | | Todo | | | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Apply validation controls at the API Gateway level | | Todo | | | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Confirm the technology for API Gateway, Developer Portal | Confirm that WSO2 is the way to go or if there's a better alternative (better suited for Open Source) | Todo | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Design solution with WSO2 API Gateway | **Security**: 1. Inbound rules 1. Outbound rules 1. Headers validation 1. Throttling | Todo | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Setup API Gateway using WSO2 - Infrastructure | | Ready | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Integration with Switch services (ml-api-adapter) | | Ready | | PI-5 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Provide Authentication | | Todo | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Developer Portal (FSPs, Hub Operator) | | Ready | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | Developer on-boarding | | Todo | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: API Gateway | Gateway, Developer Portal | QA, Testing | | Todo | | PI-6 | Switch DFSP DFSP System Integrators Hub Customer Care Hub Operator Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: DevOps, CI/CD | Deployment automation and Lab work | Making existing helm charts more maintainable & manageable | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Deployment automation and Lab work | Automate Lab Setup - chooses services (things like Gateway, etc) | Possibly using something like Terraform, Vagrant | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Deployment automation and Lab work | Validate Lab envt setup using a test framework | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Incorporating the API Gateway into the deployment process | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Incorporating the API Gateway into the CI/CD pipeline | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Automate deployment of artifacts as part of CI/CD pipeline | Currently the artifacts are published to dockerhub/npm repos based on the outcome of the testing phases but the deployment fails as quite a bit of automation is needed. This involves updating helm charts dynamically, values files and other such resources. This would tremendously reduce the amount of time involved in getting out a deployment after a release. Currently we do the deployment manually (which is not that bad) but this can be eliminated. | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | API Gateway is incorporated into the CI/CD pipeline & deployments are automated | Integrate Contract, Interface and Functional Tests in CI/CD Pipeline | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | Enable health checks to report holistically | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | Support for Zipkin | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | ELK: Support for Alerts, Notifications | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | Integrating ELK with Event Logging Framework, etc | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: DevOps, CI/CD | Monitoring, Management of resources | ELK Dashboards for KPIs, etc | | Ready | | PI-6 | Switch Hub Tech Ops Hub Customer Care |
+| NFR: Quality Assurance, Testing | Testing, QA | Standardized simulator (mock FSPs) to support automated testing | 1. Simulators that dynamically generate conditions, fulfilments etc as part of the end-to-end proccess 1. Include error end-points (addressed in another item) 1. Perform validations 1. Rework the simulator to generate the end-points based on the Swagger (to easily validate): API first approach | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Automated Functional Tests - document coverage | | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Periodic comprehensive functional testing on deployments | | Todo | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Automated Integration Tests | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Automated Contract Tests | Contract - meaning the API Specification itself.. Automated tests to ensure the Switch adheres to the API/Swagger specification, example, headers, schema, etc This ensures the users of the System that the implementation conforms to the API Specification. | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Testing, QA | Update Automated Contract, Integration, Functional Tests | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | QA, Bug Fixes | QA, Bug Fixes | | Ready | | | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | QA, Bug Fixes | Bug Fixes, QA | | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | QA, Bug Fixes | QA, Bug Fixes | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Performance testing & Improvements | | Ready | | | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Performance testing baselining after addition of new features, frameworks | Towards the end of the PI/Sprint | Ready | | PI-5 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Automated Performance Tests | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| NFR: Quality Assurance, Testing | Performance Testing, Baselining | Regular Performance testing as part of CI/CD | | Ready | | PI-6 | Switch BMGF Hub Tech Ops Hub Security, Risk and Compliance Team |
+| FR: Settlement Management | Settlements Management | Enhance Alerts and Notifications | | Ready | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Settlements Management | Follow-up items to be confirmed after the OSS Settlements API is drafted | | Todo | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Settlements Management | Handle failed acknowledgements for Settlements | | Ready | 8.00 | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Settlements Management | Settlement Reconciliation Reports | | Ready | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Identification of Framework for reporting | | Todo | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Identify data sets that can be queried - Transactions | | Ready | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Settlements reporting format decisions | | Todo | | PI-5 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Identify data sets that can be queried - Transfers | | Ready | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Standardize query API | | Ready | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | Implementation of reporting functionality | | Todo | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| FR: Settlement Management | Reporting API for FSP Consumption | QA, testing | | Todo | | PI-6 | DFSP Switch Hub Operator Hub Finance Team |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Scaling guidelines for deployment | | Todo | | | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Guidelines for optimal performance | | Todo | | | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | HA guidelines for deployment | | Todo | | | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Recommended deployment topologies | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Security guidelines for implementation, deployment | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Documentation - clarity, remove ambiguity. Review | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Deployment Topology Guidelines | Guidelines for cloud/on-prem providers | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for Hub Operators | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for OSS contributors | | Todo | | PI-5 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for FSP and System Integrators | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for OSS contributors - 2 | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Implementation Topology Guidelines | Workshops | Workshops for Hub Operators - 2 | | Todo | | PI-6 | Switch DFSP System Integrators Hub Tech Ops |
+| NFR: Event Logging | Event Logging Framework | Central processing of events and raising alerts/alarms/errors | Extend existing functionality **Interesting Events that need to be produced/captured**: 1. Up/down events for services, 1. Threshold on number of occurrences 1. Dashboards - Thresholds - CPU utilization, Disk space, configurable 1. Error events in services 1. Infrastructure events (Up/Down). 1. Connectivity events (Connect/Disconnect) 1. General service events (started, halted, etc) 1. Mojaloop errors based on the specification **Business**: 1. Thresholds 1. Limits (NDC) 1. Position events 1. Settlement events (settling, window closure, etc) **Things to take care of**: 1. Mode of notifications 1. Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops 1. Duration of persistence of logs, etc (especially commercial/business data) - comply with guidelines/ standards. 1. HA events and assess reliability - How do we measure the uptime of the system and availability | Todo | | | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Recommended usage of the alerting system | | Todo | | | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Design event logging Framework | Framework for producing & capturing Event logs that can be used for monitoring **Interesting Events that need to be produced/captured**: - Up/down events for services, - Threshold on number of occurrences - Dashboards - Thresholds - CPU utilization, Disk space, configurable - Error events in services - Infrastructure events (Up/Down). - Connectivity events (Connect/Disconnect) - General service events (started, halted, etc) - Mojaloop errors based on the specification **Business**: - Thresholds - Limits (NDC) - Position events - Settlement events (settling, window closure, etc) **Things to take care of**: - Mode of notifications - Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops - Duration of persistence of logs, etc (especially commercial/business data) - comply with guidelines/ standards. - HA events and assess reliability - How do we measure the uptime of the system and availability | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Implement Common Library for events | | Ready | 15.00 | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Implementation for producing & capturing Event logs that can be used for monitoring | Framework for producing & capturing Event logs that can be used for monitoring **Interesting Events that need to be produced/captured**: 1. Up/down events for services, 1. Threshold on number of occurrences 1. Dashboards - Thresholds - CPU utilization, Disk space, configurable 1. Error events in services 1. Infrastructure events (Up/Down). 1. Connectivity events (Connect/Disconnect) 1. General service events (started, halted, etc) 1. Mojaloop errors based on the specification **Business**: 1. Thresholds 1. Limits (NDC) 1. Position events 1. Settlement events (settling, window closure, etc) **Things to take care of**: 1. Mode of notifications 1. Separation of Technical and Commercial/Financial/Business related information - access to logs to be restricted From Ops 1. Duration of persistence of logs, etc (especially commercial/business data) - comply with guidelines/ standards. 1. HA events and assess reliability - How do we measure the uptime of the system and availability | Ready | 8.00 | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Event Logging Framework | Testing the common library, framework for producing, capturing events | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Logging standards, implement & standardize | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Changes to logging to enhance traceability | | Ready | | PI-5 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Design and identify dashboards needed for monitoring | | Todo | | PI-5 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Operational Dashboards for monitoring specific events end-to-end | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Operational Dashboards for monitoring alerts/alarms/errors | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Event Logging | Dashboards for Monitoring | Testing various dashboards | | Todo | | PI-6 | Switch Hub Tech Ops Hub Customer Care Hub Security, Risk and Compliance Team Hub Operator |
+| NFR: Error Handling | Implementing error endpoints | Design solution for supporting error endpoints for transfers | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Implementing error endpoints | Implement support for error endpoints for transfers | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Implementing error endpoints | Updating simulators to support error endpoints | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Implementing error endpoints | Support for endpoints for other resources | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Implementing error endpoints | Enhance notification mechanism to handle notification issues, perform retries | Retries according to configuration that can be set | Todo | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Publish an event to be consumed by the event framework | | Ready | | | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Design an error handling framework for a standardized way of returning results of execution | | Todo | | PI-5 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Design error mapping for the error handling framework | | Todo | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Common library for error framework | | Ready | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| NFR: Error Handling | Error Handling Framework | Implement the error handling framework | | Ready | | PI-6 | Hub Tech Ops Switch DFSP DFSP System Integrators Hub Customer Care |
+| FR: Bulk Payments | Bulk Payments Design | Design for Bulk Payments: version - 1, based on the ML Spec | | Ready | | PI-5 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Design | Design for Bulk Payments: version - 2 | | Ready | | PI-5 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Design | Finalize design for Bulk Payments | | Todo | | PI-6 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources: bulkTransfers | | Todo | | | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Bulk payments error handling | | Todo | | | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Testing Bulk Payments | | Todo | | | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources for bulk look-up, etc | | Todo | | PI-5 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources: bulkQuotes | | Todo | | PI-6 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Bulk Payments | Bulk Payments Implementation | Implementing resources: bulkTransfers - PoC | | Ready | | PI-6 | DFSP Switch DFSP System Integrators Identity Oracles |
+| FR: Forensic Logging | Forensic Logging | Migrate central-kms from scala to node and associated DB to the selected type | | Ready | | | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Forensic Logging | Revisit/review Forensic Logging Architecture | | Ready | | PI-5 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Forensic Logging | Migrate from postgres to selected persistent store (mysql/kafka) | | Ready | | PI-5 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Forensic Logging | Sidecars to periodically validate the connected services | | Todo | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Forensic Logging | Ensure algorithm and encryption functionality work as expected | | Ready | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Auditing | Define/gather auditing requirements | | Todo | | PI-5 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Auditing | Implement auditing events or logging capabilities in components | | Todo | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Auditing | Use for auditing (test by generating reports) | | Ready | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Forensic Logging | Auditing | Integration with Event Handling / ELK ? | | Ready | | PI-6 | DFSP Hub Security, Risk and Compliance Team Hub Tech Ops |
+| FR: Central Directory (account lookup) | central directory alignment to ML Spec with existing capabilities | Design solution for integration with current services | | Ready | | PI-5 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory (account lookup) | central directory alignment to ML Spec with existing capabilities | Migrate code from Mowali and replace the existing legacy code | | Ready | | PI-5 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory (account lookup) | central directory alignment to ML Spec with existing capabilities | QA, testing for lookup, integration with overall use cases | | Todo | | PI-5 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory (account lookup) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | Support for multiple identifiers? | | Todo | | | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory (account lookup) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | Design solution for Merchant registries | - As an FSP, I want to know the FSP that a Merchant belongs to - As an FSP, I want to register a new Merchant and assign a unique TILL number - As a Merchant, I want to be able to request a DFSP to assign me a Merchant number (design) - As a Switch, I should maintain a record of mapping between FSPs and Merchant IDs | Todo | | PI-6 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory (account lookup) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | Implementing solution for Merchant payments | | Todo | | PI-6 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Central Directory (account lookup) | Extend Central directory capabilities to support Merchant registries, multiple identifiers | QA, testing for lookup, integration with overall merchant use cases | | Todo | | PI-6 | DFSP DFSP System Integrators Switch Identity Oracles |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | Design solution and identify pre-requisites for Merchant payments | | Todo | | PI-5 | DFSP Switch DFSP System Integrators |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | Implement Resources: transactionRequests, authorizations | | Ready | | PI-5 | DFSP Switch DFSP System Integrators |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | Implement error endpoints and related functionality | | Todo | | PI-5 | DFSP Switch DFSP System Integrators |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | 'Merchant request to pay' is supported, released | | Todo | | PI-5 | DFSP Switch DFSP System Integrators |
+| FR: Merchant "Request to Pay" | Supporting 'Merchant request to pay' | QA, testing on the feature | | Todo | | PI-6 | DFSP Switch DFSP System Integrators |
+| NFR (new): Community Support | Supporting community regarding deployment, Mojaloop Specification | Update documentation to support community | | Todo | | PI-5 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
+| NFR (new): Community Support | Supporting community regarding deployment, Mojaloop Specification | Provide support to community requests on deployment | | Todo | | PI-5 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
+| NFR (new): Community Support | Supporting community regarding deployment, Mojaloop Specification | Provide support to community requests regarding the Spec | | Todo | | PI-5 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
+| NFR (new): Community Support | Supporting community regarding deployment, Mojaloop Specification | Provide an FAQ/Wiki section for deployment and Spec questions | | Todo | | PI-6 | BMGF DFSP Useful Resources Hub Operator Hub Customer Care DFSP System Integrators |
+| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Formalizing the Operations/Admin API | Formalize the Admin/operations API | | Ready | | PI-5 | |
+| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Formalizing the Operations/Admin API | Provide features to manage FSPs | | Ready | | PI-6 | |
+| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Formalizing the Operations/Admin API | central hub with UI ? | | Ready | | PI-6 | |
+| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | FRMS | Investigate capabilities & features needed | | Ready | | PI-6 | |
+| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | FRMS | Prioritizing Rules/Policies to implement | | Ready | | PI-6 | |
+| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Refactoring: API Led Design, Implementation for central services | Designing all central services to support API Led Design | | Ready | | PI-5 | |
+| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Refactoring: API Led Design, Implementation for central services | Refactoring for ml-api-adapter | | Ready | | PI-6 | |
+| Others (not covered) / Hardening (Cleanup, Refactoring, etc) | Refactoring: API Led Design, Implementation for central services | Refactoring for central services | | Ready | | PI-6 | |
+| Security | | | | | | | Hub Security, Risk and Compliance Team DFSP Switch |
+| Cross currency | Account Lookup Service | Change in Currency | ALS naming convention for routing - if moving from MSISDN only Identify currency and impact to Standard Transfers | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Quotation | Regulatory Data | KYC Data Need to clarify - including understanding Multi Currency What data needs to be passed - via DFSPs and through CCP How is that data passed and validated? Impact on timeouts Rules and Design | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Quotation | FX Rate Management | | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Quotation | Fees consolidation | How are fees passed along the chain? Not already in the quote Is there a need for transparency? If not how and where are all the fees calculated and brought to common currency? | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Transfer | Limit Management | Velocity Rules for sender and receiver Regulatory data required to confirm | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Transfer | Sequencing of Position management and fund movement | As now 4 (+) positions affected control financial risk | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Transfer | Rollback | How does it work - design | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Transfer | Timeout | | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Cross currency | Settlement | Reporting of Transfer | Managing the trail of the hops for the CCP and regulatory for Send and Receive | Todo | | PI-5 | DFSP Identity Oracles Hub Finance Team |
+| Documentation | | | | | | | BMGF DFSP Useful Resources |
+| FRMS | | | | | | | Hub Security, Risk and Compliance Team DFSP |
+| Lab for FSPs, deployment tools | | | | | | | BMGF |
+| Cross-network payments | | | | | | | |
+| Payment Hub | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+| | | | | | | | |
+
+
+# Beyond Phase 3
+Below is a list of larger initiatives and epics by area that will help to further develop the Mojaloop project. Some of these have been entered as epics or stories, but most are still in the "concept" phase.
+
+## Functional Epics
+* Native Implementation P2P: Implementation of resources to support Payee initiated and other Use Cases from the Specification, along with supporting P2P Use case completely
+* Native Implementation Payee: Implementation of resources to support Payee initiated transactions and ones that involve OTPs
+* Bulk Payments: Design & Implementation of resources to support Bulk Payments
+
+## Central Services
+* Directory Interoperability
+* Multi-currency and schemes
+* Enforcing Currency configurations
+* Fees: UI for configuring fees
+* Increase performance
+* Fraud Scores and Reasons
+* Role management
+* DSP Management
+* Stopping/Pausing a DFSP
+* boarding protocol
+
+## DFSP/Account Management
+* Agent Network
+* NFCC identity merchant
+* Persistent merchant ID
+* Onboarding protocol
+* Change password
+* Password requirements
+* Hold/Restart account
+
+## Security
+* Central certificate service
+* Implement fee quote transfer service in the center
+* Prevent user guessing from rogue DFSPs
+* Preferred authorizations
+
+## Market Deployment
+* Integration with major mobile money vendors in Africa (PDP initiative)
+
+## CI/CD & Testing
+* Implement auto deployment to test environment
+* Automatically run acceptance tests in test environment as part of build/deploy
+* Automate bulk import tests
+* Forensic log test
+* Account management test
description: Mojaloop Contributors Guide
Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
-There's a [roadmap](https://github.com/mojaloop/mojaloop/blob/master/contribute/Roadmap.md) that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
+There's a [roadmap](../mojaloop-roadmap.md) that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
In general, we are looking for example implementations and bug fixes, and project enhancements.
description: Mojaloop Contributors Guide
## How do I contribute?
### \* Review the [Mojaloop Deployment](mojaloop-deployment.md#mojaloop-deployment) Guide
-
### \* Review our [Standards](standards.md) document on contributing to our Open Source Project
-
### \* Review our [Roadmap](../mojaloop-roadmap.md) and look for issues in the project repository requesting contributor Help.
## What work is needed?
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Repositories](mojaloop-technical-overview/repositories.md)
* [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
+* [Mojaloop Roadmap](mojaloop-roadmap.md)
description: Mojaloop Contributors Guide
### \* Review our [Standards](standards.md) document on contributing to our Open Source Project
-### \* Review our Roadmap and look Issues requesting for Contributor Help.
+### \* Review our [Roadmap](../mojaloop-roadmap.md) and look for issues in the project repository requesting contributor Help.
-### What work is needed?
+## What work is needed?
Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
The [Interledger Protocol Suite](https://interledger.org/) \(ILP\) is an open an
UPDATE: For bugs, see [Reporting bugs](https://github.com/mojaloop/mojaloop/blob/master/contribute/Reporting-Bugs.md).
-### Pull Request Process
-
-It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
-
-### Code of conduct UPDATE
-
-We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
-
-### Licensing
-
-See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
-
-### What version?
-
-Naturally, we use [semantic versioning](http://semver.org/), and each repo has it's own version. Update the version appropriately when you submit a pull request. Example: git tag v0.4.0 \# update the version.
-
-### Additional Information UPDATE
-
-For additional information please review the [frequently asked questions](https://github.com/mojaloop/documentation/tree/5c7ed2fbb64393b6d224e73d68351bff5b4bed4e/FAQ.md).
-
## Types of Contributors
There are three types of contributors that we are targeting for this phase of the Mojaloop project.
This document provides guidelines regarding the versioning strategy used for the
1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+### Pull Request Process
+
+It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
+
+### Code of conduct
+
+We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
+
+### Licensing
+
+See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+##
+
description: Mojaloop Contributors Guide
## How do I contribute?
-### Review the Deployment and Standards Guide
-
-Review the \[deployment and setup document\]\([https://mojaloop.gitbook.io/mojaloop/contributors-guide/mojaloop-deployment](https://mojaloop.gitbook.io/mojaloop/contributors-guide/mojaloop-deployment)\)
-
-Review \[Standards\] for participating in the Mojaloop open source project \([https://mojaloop.gitbook.io/mojaloop/contributors-guide/standards](https://mojaloop.gitbook.io/mojaloop/contributors-guide/standards)\)
+### \* Review the [Mojaloop Deployment](mojaloop-deployment.md#mojaloop-deployment) Guide
+### \* Review our [Standards](standards.md) document on contributing to our Open Source Project
+### \* Review our Roadmap and look Issues requesting for Contributor Help.
### What work is needed?
UPDATE: For bugs, see [Reporting bugs](https://github.com/mojaloop/mojaloop/blob
It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
-### Style guides and templates UPDATE
-
-* [Documentation standards](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-and-Template-Standards.md)
-* [Documentation style guide](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-Style-Guide.md)
-* [Code Style](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Style.md)
-* [Code Quality Metrics](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Quality-Metrics.md)
-
### Code of conduct UPDATE
We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
These individuals are those that want to start contributing to the Mojaloop comm
### Hub Operators
-Typically these or organizations or individuals or goverment agencies that are interested in setting up their own Mojaloop Switch to become part of the ecosystem.
+Typically these or organizations or individuals or government agencies that are interested in setting up their own Mojaloop Switch to become part of the ecosystem.
### Implementation Teams
-Implementation teams can assist banks, goverment offices, mobile operators or credit unions in deploying Mojaloop.
+Implementation teams can assist banks, government offices, mobile operators or credit unions in deploying Mojaloop.
# Documentation
+### Style guides and templates UPDATE
+
+* [Documentation standards](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-and-Template-Standards.md)
+* [Documentation style guide](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-Style-Guide.md)
+* [Code Style](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Style.md)
+* [Code Quality Metrics](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Quality-Metrics.md)
+
+###
+
* [Mojaloop Overview](README.md)
* [Contributors Guide](contributors-guide/README.md)
+ * [Mojaloop Deployment](contributors-guide/mojaloop-deployment.md)
+ * [Standards](contributors-guide/standards.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
* [Documentation](contributors-guide/documentation.md)
- * [Standards](contributors-guide/standards.md)
- * [Mojaloop Deployment](contributors-guide/mojaloop-deployment.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Repositories](mojaloop-technical-overview/repositories.md)
description: Mojaloop Contributors Guide
### Review the Deployment and Standards Guide
-\[Deployment and Setup Document\]\([https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md](https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md)\)
+Review the \[deployment and setup document\]\([https://mojaloop.gitbook.io/mojaloop/contributors-guide/mojaloop-deployment](https://mojaloop.gitbook.io/mojaloop/contributors-guide/mojaloop-deployment)\)
+
+Review \[Standards\] for participating in the Mojaloop open source project \([https://mojaloop.gitbook.io/mojaloop/contributors-guide/standards](https://mojaloop.gitbook.io/mojaloop/contributors-guide/standards)\)
+
+
### What work is needed?
# Mojaloop Deployment
-# Deployment and Setup Introduction
+## Mojaloop Deployment
+
+## Deployment and Setup Introduction
+
This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
-* [Software List](#1-software-list)
- * [Deployment Recommendations](#11-deployment-recommendations)
- * [Local Deployment and Testing Tools](#12-local-deployment-and-testing-tools)
-* [Deployment](#2-deployment)
- * [Kubernetes](#21-kubernetes)
- * [Kubernetes Installation with Docker](#211-kubernetes-installation-with-docker)
- * [Kubernetes environment setup](#212-kubernetes-environment-setup)
- * [Helm](#22-helm)
- * [Helm Chart Installation](#221-helm-chart-installation)
- * [Postman](#23-postman)
- * [Installing Postman](#231-installing-postman)
- * [Setup Postman](#231-setup-postman)
-* [Errors During Setup](#24-errors-on-setup)
-
-## 1 Software List
-Before proceeding, please have a look at [Deployment Recommedations](#11-deployment-recommendations) to insure the minimum resource requirements are availlable.
-
-### 1.1 Deployment Recommendations
+* [Software List](mojaloop-deployment.md#1-software-list)
+ * [Deployment Recommendations](mojaloop-deployment.md#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](mojaloop-deployment.md#12-local-deployment-and-testing-tools)
+* [Deployment](mojaloop-deployment.md#2-deployment)
+ * [Kubernetes](mojaloop-deployment.md#21-kubernetes)
+ * [Kubernetes Installation with Docker](mojaloop-deployment.md#211-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](mojaloop-deployment.md#212-kubernetes-environment-setup)
+ * [Helm](mojaloop-deployment.md#22-helm)
+ * [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation)
+ * [Postman](mojaloop-deployment.md#23-postman)
+ * [Installing Postman](mojaloop-deployment.md#231-installing-postman)
+ * [Setup Postman](mojaloop-deployment.md#231-setup-postman)
+* [Errors During Setup](mojaloop-deployment.md#24-errors-on-setup)
+
+### 1 Software List
+
+Before proceeding, please have a look at [Deployment Recommedations](mojaloop-deployment.md#11-deployment-recommendations) to insure the minimum resource requirements are availlable.
+
+#### 1.1 Deployment Recommendations
+
This provides environment resource recommendations with a view of the infrastructure architecture.
-##### Resources Requirements:
-- Control Plane (i.e. Master Node)
- ```http request
- https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components
- ```
- - 3x Master Nodes for future node scaling and HA (High Availability)
-- ETCd Plane:
- ```http request
- https://coreos.com/etcd/docs/latest/op-guide/hardware.html
- ```
- - 3x ETCd nodes for HA (High Availability)
-- Compute Plane (i.e. Worker Node):
+**Resources Requirements:**
+
+* Control Plane \(i.e. Master Node\)
+
+ \`\`\`http request
+
+ [https://kubernetes.io/docs/setup/cluster-large/\#size-of-master-and-master-components](https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components)
+
+ \`\`\`
+
+ * 3x Master Nodes for future node scaling and HA \(High Availability\)
+
+* ETCd Plane:
- TBC once load testing has been concluded. However the current general *recommended size:
- - 3x Worker nodes, each being:
- - 4x vCPUs, 16GB of RAM, and 40gb storage
-
- *Note that this would also depend on your underlaying infrastructure, and it does NOT include requirements for persistent volumes/storage.
-
- 
-
- [Mojaloop Deployment Recommendations - Infrastructure Architecture](../Wiki/KubeInfrastructureArch.svg)
+ \`\`\`http request
+ [https://coreos.com/etcd/docs/latest/op-guide/hardware.html](https://coreos.com/etcd/docs/latest/op-guide/hardware.html)
+
+ \`\`\`
+
+ * 3x ETCd nodes for HA \(High Availability\)
+
+* Compute Plane \(i.e. Worker Node\):
+
+ TBC once load testing has been concluded. However the current general \*recommended size:
+
+ * 3x Worker nodes, each being:
+ * 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ \*Note that this would also depend on your underlaying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+ 
+
+ [Mojaloop Deployment Recommendations - Infrastructure Architecture](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Wiki/KubeInfrastructureArch.svg)
+
+#### 1.2 Local Deployment and Testing Tools
-### 1.2 Local Deployment and Testing Tools
The tool set to be deployed as part of the deployment process.
-|Tool|Required/Optional|Description|Install Info|
-|---|---|---|---|
-|Docker|Required|Docker Engine and CLI ClientLocal Kubernetes single node cluster|[https://docs.docker.com/install](https://docs.docker.com/install)|
-|Kubectl|Required|Kubernetes CLI for Kubernetes ManagementNote Docker installs this part of Kubernetes install|[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/doc/tasks/tools/install-kuberctl)Docker Kubernetes Install (as per this guide)Mac: brew install kubernetes-cli|
-|Kubectx|Optional(useful tool)|Kubernetes CLI for Kubernetes Context Management HelperNote Docker insgtalls this as part of Kubernetes install|[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)Mac: brew install kubectx|
-|Kubetail|Optional(useful tool)|Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running `kubectl logs -f` but for multiple pods.Example usage `kubetail moja.* -n demo`|https://github.com/johanhaleby/kubetail|
-|Helm|Required|Helm helps you manage Kubernetes applicationsHelm charts help you define, install and upgrade even the most complex Kubernetes application|[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)Mac: brew install kubernetes-helm|
-|Postman|Required|Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.|[https://www.getpostman.com/apps](https://www.getpostman.com/apps)|
+
+
+
+ Tool
+ Required/Optional
+ Description
+ Install Info
+
+
+
+
+ Docker
+ Required
+
+ Docker Engine and CLI Client
+ Local Kubernetes single node cluster
+
+ [https://docs.docker.com/install](https://docs.docker.com/install)
+
+
+ Kubectl
+ Required
+
+ Kubernetes CLI for Kubernetes Management
+ Note Docker installs this part of Kubernetes install
+
+
+ [https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/doc/tasks/tools/install-kuberctl)
+ Docker Kubernetes Install (as per this guide)
+ Mac: brew install kubernetes-cli
+
+
+
+ Kubectx
+ Optional(useful tool)
+
+ Kubernetes CLI for Kubernetes Context Management Helper
+ Note Docker insgtalls this as part of Kubernetes install
+
+
+ [https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)
+ Mac: brew install kubectx
+
+
+
+ Kubetail
+ Optional(useful tool)
+
+ Bash script that enables you to aggregate (tail/follow) logs from multiple
+ pods into one stream. This is the same as running `kubectl logs -f` but
+ for multiple pods.
+ Example usage `kubetail moja.* -n demo`
+
+ https://github.com/johanhaleby/kubetail
+
+
+ Helm
+ Required
+
+ Helm helps you manage Kubernetes applications
+ Helm charts help you define, install and upgrade even the most complex
+ Kubernetes application
+
+
+ [https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)
+ Mac: brew install kubernetes-helm
+
+
+
+ Postman
+ Required
+ Postman is a Google Chrome application for the interacting with HTTP API's.
+ It presents you with a friendly GUI for the construction requests and reading
+ responces.
+ [https://www.getpostman.com/apps](https://www.getpostman.com/apps)
+
+
+### 2 Deployment
-## 2 Deployment
This section will guide the reader through the deployment process to setup Kubernetes within Docker.
-### 2.1 Kubernetes
+#### 2.1 Kubernetes
+
If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
-- Deployment
-- Pod
-- ReplicaSets
-- Service
-- Ingress
-- StatefulSet
-- DaemonSet
-- Ingress Controller
-- ConfigMap
-- Secret
-
-#### 2.1.1 Kubernetes Installation with Docker
+
+* Deployment
+* Pod
+* ReplicaSets
+* Service
+* Ingress
+* StatefulSet
+* DaemonSet
+* Ingress Controller
+* ConfigMap
+* Secret
+
+**2.1.1 Kubernetes Installation with Docker**
+
To install Kubernetes with Docker, follow the steps below;
- - Click on the Docker icon on the status barr
- - Select **Preferences**
- - Go to **Advanced**
- - Increase the CPU allocation to at least 4
- - Increase the Memory allocation to at least 8.0 GiB
-
+* Click on the Docker icon on the status barr
+ * Select **Preferences**
+ * Go to **Advanced**
+ * Increase the CPU allocation to at least 4
+ * Increase the Memory allocation to at least 8.0 GiB
-[Kubernetes Install with Docker 1](../Wiki/KubernetesInstallWithDocker-1.png)
+
- - Go to **Kubernetes**
- - Select **Enable Kubernetes** tick box
- - Make sure **Kubernetes** is selected
- - Click **Apply**
- - Click **Install** on the confirmation tab.
- - The option is available to wait for completion or run as a background task.
+[Kubernetes Install with Docker 1](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Wiki/KubernetesInstallWithDocker-1.png)
-
+* Go to **Kubernetes**
+ * Select **Enable Kubernetes** tick box
+ * Make sure **Kubernetes** is selected
+ * Click **Apply**
+ * Click **Install** on the confirmation tab.
+ * The option is available to wait for completion or run as a background task.
-[Kubernetes Install with Docker 2](../Wiki/KubernetesInstallWithDocker-2.png)
+
-#### 2.1.2 Kubernetes environment setup:
-The following are all command line executables specifically for Mac.
-1. List the current Kubernetes context;
- ```bash
+[Kubernetes Install with Docker 2](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Wiki/KubernetesInstallWithDocker-2.png)
+
+**2.1.2 Kubernetes environment setup:**
+
+The following are all command line executables specifically for Mac. 1. List the current Kubernetes context;
+
+```bash
kubectl config get-contexts
- ```
- or
- ```bash
+```
+
+or
+
+```bash
kubectx
- ```
+```
+
1. Change your Contexts;
+
```bash
kubectl config use-contexts
```
+
or
+
```bash
kubectx docker-for-desktop
```
-1. Install Kubernetes Dashboard roles, services & deployment. (Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard))
- **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+2. Install Kubernetes Dashboard roles, services & deployment. \(Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard)\)
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+
```bash
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
```
-1. Verify Kubernetes Dashboard;
+
+3. Verify Kubernetes Dashboard;
+
```bash
kubectl get pod --namespace=kube-system |grep dashboard
```
-1. Start proxy for local UI in new terminal;
+
+4. Start proxy for local UI in new terminal;
+
```bash
kubectl proxy ui
```
-1. Open URI in default browser
+
+5. Open URI in default browser
+
```bash
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
```
- Select __Token__. Generate a token to use there by:
+
+ Select **Token**. Generate a token to use there by:
+
```bash
kubectl -n kube-system get secrets | grep dashboard-token
```
- ___
+
The token to use is shown on the last line of the output of that command.
- ___
+
```bash
kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
```
- The __{kubernetes-dashboard-token-btbwf}__ is retrieved from the output in the previous step.
- For more information on generating the token, follow the __Authentication__ link in the window.
-
- 
- [kubernetes-dashboard](../Wiki/kubernetesDashboard.png)
+ The **{kubernetes-dashboard-token-btbwf}** is retrieved from the output in the previous step. For more information on generating the token, follow the **Authentication** link in the window.
+
+ 
+
+ [kubernetes-dashboard](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Wiki/kubernetesDashboard.png)
+
+6. Config Helm CLI and install Helm Tiller on K8s cluster
-1. Config Helm CLI and install Helm Tiller on K8s cluster
```bash
helm init
```
-1. Validate Helm Tiller is up and running
+
+7. Validate Helm Tiller is up and running
+
```bash
kubectl -n kube-system get po | grep tiller
```
-1. Add mojaloop repo to your Helm config (optional)
+
+8. Add mojaloop repo to your Helm config \(optional\)
+
```bash
helm repo add mojaloop http://mojaloop.io/helm/repo/
```
-1. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+
+9. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+
```bash
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
```
-1. Update helm repositories
- ```bash
- helm repro update
- ```
-1. Install nginx-ingress for load balancing & external access
- ```bash
- helm --namespace kube-public install stable/nginx-ingress
- ```
-1. Add the following to your /ect/hosts
- ```text
- 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
- ```
-1. Test system health in your browser after installation
- ___
- ml-api-adapter health test
- ```http request
- http://ml-api-adapter/health
- ```
- ___
- central-ledger health test
- ```http request
- http://central-ledger/health
- ```
+10. Update helm repositories
+
+ ```bash
+ helm repro update
+ ```
+
+11. Install nginx-ingress for load balancing & external access
+
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+
+12. Add the following to your /ect/hosts
+
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+
+13. Test system health in your browser after installation
+
+ ml-api-adapter health test
+
+ \`\`\`http request
+
+ [http://ml-api-adapter/health](http://ml-api-adapter/health)
+
+ ```text
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+#### 2.2 Helm
+
+Please review [Mojaloop Helm Chart](https://github.com/mojaloop/documentation/tree/c47c1b3947f77d81829d9e303a2a09c840528673/Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
-### 2.2 Helm
-Please review [Mojaloop Helm Chart](../Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
+**2.2.1 Helm Chart Installation**
-##### 2.2.1 Helm Chart Installation
This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
1. Lets start by **listing** the current helm charts deployed
+
```bash
helm list
```
-1. If you would like to **delete** a deployed helm chart
+2. If you would like to **delete** a deployed helm chart
+
```bash
helm del --purge moja
```
- __Note:__ for demo purposes we are using __moja__ as the chart __name__. Please verify and use the correct chart name from the listing above.
-
-1. To **install** Mojaloop chart(s)
-
+
+ **Note:** for demo purposes we are using **moja** as the chart **name**. Please verify and use the correct chart name from the listing above.
+
+3. To **install** Mojaloop chart\(s\)
+
To install the full mojaloop project
+
```bash
helm install --namespace=demo --name=moja mojaloop/mojaloop
```
- Alternative directly from the repository:
+
+ Alternative directly from the repository:
+
```bash
helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
```
- __or__ install a specific mojaloop chart eg. Central-ledger
+ **or** install a specific mojaloop chart eg. Central-ledger
+
```bash
helm install --namespace=demo --name=moja mojaloop/centralledger
```
- Alternative directly from the repository:
+
+ Alternative directly from the repository:
+
```bash
helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
```
-1. To upgrade Mojaloop chart(s)
+
+4. To upgrade Mojaloop chart\(s\)
+
Note: 'v5.1.1' is an example value.
+
```bash
helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
```
-1. To upgrade a specific chart eg. Central-ledger
+
+5. To upgrade a specific chart eg. Central-ledger
+
```bash
helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
```
-### 2.3 Postman
+#### 2.3 Postman
+
Postman is used to send requests and receive responses.
-##### 2.3.1 Installing Postman
+**2.3.1 Installing Postman**
+
Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
Alternatively on **Ubuntu** you may run:
+
```bash
wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
sudo tar -xzf postman.tar.gz -C /opt
rm postman.tar.gz
sudo ln -s /opt/Postman/Postman /usr/bin/postman
```
-#### 2.3.1 Setup Postman
-* Download this file https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json
+**2.3.1 Setup Postman**
+
+* Download this file [https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman\_collection.json](https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json)
* Open **Postman**
* Click **Import** and then **Import File**
-* Select the *Mojaloop.postman_collection.json* file you downloaded
-* You'll now need to import environment variables. For local testing, download this file https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json
+* Select the _Mojaloop.postman\_collection.json_ file you downloaded
+* You'll now need to import environment variables. For local testing, download this file [https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman\_environment.json](https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json)
* Click **Import** and then **Import File**
-* Select the *MojaloopLocal.postman_environment.json* file you downloaded
-* In the imported collection, navigate to the *central_ledger* directory
+* Select the _MojaloopLocal.postman\_environment.json_ file you downloaded
+* In the imported collection, navigate to the _central\_ledger_ directory
+
+#### 2.4 Errors On Setup
+
+* \`central-ledger’s server IP address could not be found.
+
+ ERR\_NAME\_NOT\_RESOLVED\`
-### 2.4 Errors On Setup
-* `central-ledger’s server IP address could not be found.
- ERR_NAME_NOT_RESOLVED`
Resolved by:
- * Verify that a helm chart(s) was installed by executing
- ```bash
- helm list
- ```
- If the helm charts are not listed, see the [Helm Chart Installation](#221-helm-chart-installation) section to install a chart.
-___
+
+ * Verify that a helm chart\(s\) was installed by executing
+
+ ```bash
+ helm list
+ ```
+
+ If the helm charts are not listed, see the [Helm Chart Installation](mojaloop-deployment.md#221-helm-chart-installation) section to install a chart.
+
# Mojaloop Deployment
+# Deployment and Setup Introduction
+This document will provide guidelines to deploy and configure the Mojaloop applications on a local environment, utilizing Kubernetes within Docker.
+
+* [Software List](#1-software-list)
+ * [Deployment Recommendations](#11-deployment-recommendations)
+ * [Local Deployment and Testing Tools](#12-local-deployment-and-testing-tools)
+* [Deployment](#2-deployment)
+ * [Kubernetes](#21-kubernetes)
+ * [Kubernetes Installation with Docker](#211-kubernetes-installation-with-docker)
+ * [Kubernetes environment setup](#212-kubernetes-environment-setup)
+ * [Helm](#22-helm)
+ * [Helm Chart Installation](#221-helm-chart-installation)
+ * [Postman](#23-postman)
+ * [Installing Postman](#231-installing-postman)
+ * [Setup Postman](#231-setup-postman)
+* [Errors During Setup](#24-errors-on-setup)
+
+## 1 Software List
+Before proceeding, please have a look at [Deployment Recommedations](#11-deployment-recommendations) to insure the minimum resource requirements are availlable.
+
+### 1.1 Deployment Recommendations
+This provides environment resource recommendations with a view of the infrastructure architecture.
+
+##### Resources Requirements:
+- Control Plane (i.e. Master Node)
+ ```http request
+ https://kubernetes.io/docs/setup/cluster-large/#size-of-master-and-master-components
+ ```
+ - 3x Master Nodes for future node scaling and HA (High Availability)
+- ETCd Plane:
+ ```http request
+ https://coreos.com/etcd/docs/latest/op-guide/hardware.html
+ ```
+ - 3x ETCd nodes for HA (High Availability)
+- Compute Plane (i.e. Worker Node):
+
+ TBC once load testing has been concluded. However the current general *recommended size:
+ - 3x Worker nodes, each being:
+ - 4x vCPUs, 16GB of RAM, and 40gb storage
+
+ *Note that this would also depend on your underlaying infrastructure, and it does NOT include requirements for persistent volumes/storage.
+
+ 
+
+ [Mojaloop Deployment Recommendations - Infrastructure Architecture](../Wiki/KubeInfrastructureArch.svg)
+
+
+### 1.2 Local Deployment and Testing Tools
+The tool set to be deployed as part of the deployment process.
+
+|Tool|Required/Optional|Description|Install Info|
+|---|---|---|---|
+|Docker|Required|Docker Engine and CLI ClientLocal Kubernetes single node cluster|[https://docs.docker.com/install](https://docs.docker.com/install)|
+|Kubectl|Required|Kubernetes CLI for Kubernetes ManagementNote Docker installs this part of Kubernetes install|[https://kubernetes.io/doc/tasks/tools/install-kuberctl](https://kubernetes.io/doc/tasks/tools/install-kuberctl)Docker Kubernetes Install (as per this guide)Mac: brew install kubernetes-cli|
+|Kubectx|Optional(useful tool)|Kubernetes CLI for Kubernetes Context Management HelperNote Docker insgtalls this as part of Kubernetes install|[https://github.com/ahmetb/kubectx](https://github.com/ahmetb/kubectx)Mac: brew install kubectx|
+|Kubetail|Optional(useful tool)|Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. This is the same as running `kubectl logs -f` but for multiple pods.Example usage `kubetail moja.* -n demo`|https://github.com/johanhaleby/kubetail|
+|Helm|Required|Helm helps you manage Kubernetes applicationsHelm charts help you define, install and upgrade even the most complex Kubernetes application|[https://docs.helm.sh/using_helm/#installing-helm](https://docs.helm.sh/using_helm/#installing-helm)Mac: brew install kubernetes-helm|
+|Postman|Required|Postman is a Google Chrome application for the interacting with HTTP API's. It presents you with a friendly GUI for the construction requests and reading responces.|[https://www.getpostman.com/apps](https://www.getpostman.com/apps)|
+
+## 2 Deployment
+This section will guide the reader through the deployment process to setup Kubernetes within Docker.
+
+### 2.1 Kubernetes
+If you are new to Kubernetes it is strongly recommended to familiarize yourself with Kubernetes. [Kubernetes Concepts](https://kubernetes.io/docs/concepts/overview/) is a good place to start and will provide an overview.
+
+The following are Kubernetes concepts used within the project. An understanding of these concepts is imperative before attempting the deployment;
+- Deployment
+- Pod
+- ReplicaSets
+- Service
+- Ingress
+- StatefulSet
+- DaemonSet
+- Ingress Controller
+- ConfigMap
+- Secret
+
+#### 2.1.1 Kubernetes Installation with Docker
+To install Kubernetes with Docker, follow the steps below;
+ - Click on the Docker icon on the status barr
+ - Select **Preferences**
+ - Go to **Advanced**
+ - Increase the CPU allocation to at least 4
+ - Increase the Memory allocation to at least 8.0 GiB
+
+
+
+[Kubernetes Install with Docker 1](../Wiki/KubernetesInstallWithDocker-1.png)
+
+ - Go to **Kubernetes**
+ - Select **Enable Kubernetes** tick box
+ - Make sure **Kubernetes** is selected
+ - Click **Apply**
+ - Click **Install** on the confirmation tab.
+ - The option is available to wait for completion or run as a background task.
+
+
+
+[Kubernetes Install with Docker 2](../Wiki/KubernetesInstallWithDocker-2.png)
+
+#### 2.1.2 Kubernetes environment setup:
+The following are all command line executables specifically for Mac.
+1. List the current Kubernetes context;
+ ```bash
+ kubectl config get-contexts
+ ```
+ or
+ ```bash
+ kubectx
+ ```
+1. Change your Contexts;
+ ```bash
+ kubectl config use-contexts
+ ```
+ or
+ ```bash
+ kubectx docker-for-desktop
+ ```
+1. Install Kubernetes Dashboard roles, services & deployment. (Alternative install for Dashboard using Helm: [kubernetes-dashboard](https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard))
+
+ **IMPORTANT:** Always verify current [kubernetes-dashboard](https://github.com/kubernetes/dashboard) yaml file for the below create command.
+ ```bash
+ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
+ ```
+1. Verify Kubernetes Dashboard;
+ ```bash
+ kubectl get pod --namespace=kube-system |grep dashboard
+ ```
+1. Start proxy for local UI in new terminal;
+ ```bash
+ kubectl proxy ui
+ ```
+1. Open URI in default browser
+ ```bash
+ http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/
+ ```
+ Select __Token__. Generate a token to use there by:
+ ```bash
+ kubectl -n kube-system get secrets | grep dashboard-token
+ ```
+ ___
+ The token to use is shown on the last line of the output of that command.
+ ___
+ ```bash
+ kubectl -n kube-system describe secrets/kubernetes-dashboard-token-btbwf
+ ```
+ The __{kubernetes-dashboard-token-btbwf}__ is retrieved from the output in the previous step.
+ For more information on generating the token, follow the __Authentication__ link in the window.
+
+ 
+
+ [kubernetes-dashboard](../Wiki/kubernetesDashboard.png)
+
+1. Config Helm CLI and install Helm Tiller on K8s cluster
+ ```bash
+ helm init
+ ```
+1. Validate Helm Tiller is up and running
+ ```bash
+ kubectl -n kube-system get po | grep tiller
+ ```
+1. Add mojaloop repo to your Helm config (optional)
+ ```bash
+ helm repo add mojaloop http://mojaloop.io/helm/repo/
+ ```
+1. Add the incubator. This is needed to resolve Helm Chart dependencies required by Mojaloop charts
+ ```bash
+ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+ ```
+
+1. Update helm repositories
+ ```bash
+ helm repro update
+ ```
+1. Install nginx-ingress for load balancing & external access
+ ```bash
+ helm --namespace kube-public install stable/nginx-ingress
+ ```
+1. Add the following to your /ect/hosts
+ ```text
+ 127.0.0.1 interop-switch.local central-kms.local forensic-logging-sidecar.local central-ledger.local central-end-user-registry.local central-directory.local central-hub.local central-settlements.local ml-api-adapter.local
+ ```
+1. Test system health in your browser after installation
+ ___
+ ml-api-adapter health test
+ ```http request
+ http://ml-api-adapter/health
+ ```
+ ___
+ central-ledger health test
+ ```http request
+ http://central-ledger/health
+ ```
+
+### 2.2 Helm
+Please review [Mojaloop Helm Chart](../Diagrams/MojaloopHelmChart.md) to understand the relationships between the deployed Mojaloop helm charts.
+
+##### 2.2.1 Helm Chart Installation
+This section will provide guidelines to delete, list, install and upgrade of the helm charts. For a comprehensive deployment documentation, please see [Helm Chart Deployment](https://github.com/mojaloop/helm/blob/master/README.md)
+
+1. Lets start by **listing** the current helm charts deployed
+ ```bash
+ helm list
+ ```
+
+1. If you would like to **delete** a deployed helm chart
+ ```bash
+ helm del --purge moja
+ ```
+ __Note:__ for demo purposes we are using __moja__ as the chart __name__. Please verify and use the correct chart name from the listing above.
+
+1. To **install** Mojaloop chart(s)
+
+ To install the full mojaloop project
+ ```bash
+ helm install --namespace=demo --name=moja mojaloop/mojaloop
+ ```
+ Alternative directly from the repository:
+ ```bash
+ helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo mojaloop
+ ```
+
+ __or__ install a specific mojaloop chart eg. Central-ledger
+ ```bash
+ helm install --namespace=demo --name=moja mojaloop/centralledger
+ ```
+ Alternative directly from the repository:
+ ```bash
+ helm install --namespace=demo --name=moja --repo=http://mojaloop.io/helm/repo centralledger
+ ```
+1. To upgrade Mojaloop chart(s)
+ Note: 'v5.1.1' is an example value.
+ ```bash
+ helm upgrade moja --set central.centralledger.centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop
+ ```
+1. To upgrade a specific chart eg. Central-ledger
+ ```bash
+ helm upgrade moja --set centralledger-services.containers.api.image.tag=v5.1.1-snapshot mojaloop/centralledger
+ ```
+
+### 2.3 Postman
+Postman is used to send requests and receive responses.
+
+##### 2.3.1 Installing Postman
+Please, follow these instructions: [Get Postman](https://www.getpostman.com/postman)
+
+Alternatively on **Ubuntu** you may run:
+```bash
+wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
+sudo tar -xzf postman.tar.gz -C /opt
+rm postman.tar.gz
+sudo ln -s /opt/Postman/Postman /usr/bin/postman
+```
+
+#### 2.3.1 Setup Postman
+* Download this file https://raw.githubusercontent.com/mojaloop/postman/master/Mojaloop.postman_collection.json
+* Open **Postman**
+* Click **Import** and then **Import File**
+* Select the *Mojaloop.postman_collection.json* file you downloaded
+* You'll now need to import environment variables. For local testing, download this file https://raw.githubusercontent.com/mojaloop/postman/master/environments/MojaloopLocal.postman_environment.json
+* Click **Import** and then **Import File**
+* Select the *MojaloopLocal.postman_environment.json* file you downloaded
+* In the imported collection, navigate to the *central_ledger* directory
+
+### 2.4 Errors On Setup
+* `central-ledger’s server IP address could not be found.
+ ERR_NAME_NOT_RESOLVED`
+ Resolved by:
+ * Verify that a helm chart(s) was installed by executing
+ ```bash
+ helm list
+ ```
+ If the helm charts are not listed, see the [Helm Chart Installation](#221-helm-chart-installation) section to install a chart.
+___
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
* [Documentation](contributors-guide/documentation.md)
* [Standards](contributors-guide/standards.md)
+ * [Mojaloop Deployment](contributors-guide/mojaloop-deployment.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Repositories](mojaloop-technical-overview/repositories.md)
# Standards
-## Standards for adopting an Open Source contribution into Mojaloop
+## Standards
+
+### Standards for adopting an Open Source contribution into Mojaloop
+
This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
-### Prerequisites
+#### Prerequisites
+
1. The contribution should be in-line with the LevelOne Principles
-2. Basic guidelines regarding status of the contribution (Code-base / Standards / Designs / Specifications)
+2. Basic guidelines regarding status of the contribution \(Code-base / Standards / Designs / Specifications\)
3. Basic documentation to get started
-### Guidelines regarding adoption
+#### Guidelines regarding adoption
+
1. Create a private repo on the Mojaloop GitHub organization
-2. Have a sub-team of the DA take a look to make sure its portable (to OSS) - aligns with L1P principles, etc, and ensure design is in line with standards
+2. Have a sub-team of the DA take a look to make sure its portable \(to OSS\) - aligns with L1P principles, etc, and ensure design is in line with standards
3. Check Licensing
4. Assess Performance impact
-5. Create action items (stories) to update naming, remove/sanitize any items that are not generic
+5. Create action items \(stories\) to update naming, remove/sanitize any items that are not generic
6. Configuration for 'modes of operation'
7. Enable CI/CD pipeline
+## Creating new Features
-# Creating new Features #
+### Fork
-## Fork ##
+Fork the Mojaloop repository into your own personal space. Ensure that you keep the `master` branch in sync.
-Fork the Mojaloop repository into your own personal space.
-Ensure that you keep the `master` branch in sync.
-
-Refer to the following documentation for more information: https://help.github.com/articles/fork-a-repo/
-
-1. Clone repo using Git Fork button (refer to the above documentation for more information)
+Refer to the following documentation for more information: [https://help.github.com/articles/fork-a-repo/](https://help.github.com/articles/fork-a-repo/)
+1. Clone repo using Git Fork button \(refer to the above documentation for more information\)
2. Clone your forked repo: `git clone https://github.com//.git`
-
3. Synchronise your forked repo with Mojaloop
-
- Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
- You should now see that you have two remotes:
- ```bash
+ Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
+
+ You should now see that you have two remotes:
+
+ ```bash
git remote -v
origin https://github.com//.git (fetch)
origin https://github.com//.git (push)
mojaloop https://github.com/mojaloop/.git (fetch)
mojaloop https://github.com/mojaloop/.git (push)
- ```
-4. To sync to your current branch: `git pull mojaloop `
- This will merge any changes from Mojaloop's repo into your forked repo.
+ ```
+4. To sync to your current branch: `git pull mojaloop ` This will merge any changes from Mojaloop's repo into your forked repo.
5. Push the changes back to your remote fork: `git push origin `
-## Creating a Branch ##
+### Creating a Branch
-Create a new branch from the `master` branch with the following format:
-`/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
+Create a new branch from the `master` branch with the following format: `/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
1. Create and checkout the branch: `git checkout -b /`
2. Push the branch to your remote: `git push origin /`
Where `` can be one of the following:
-| branchType | Description |
-| ------------- | ------------- |
+| branchType | Description |
+| :--- | :--- |
| feature | Any new or maintenance features that are in active development. |
| hotfix | A hotfix branch is for any urgent fixes. |
| release | A release branch containing a snapshot of a release. |
-| backup | A temporary backup branch. Used normally during repo maintenance. |
-
+| backup | A temporary backup branch. Used normally during repo maintenance. |
+
+### Merge into Mojaloop Repo
-## Merge into Mojaloop Repo ##
+Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository \(not your personal repo\) for approval, and check validations \(e.g. unit tests, code coverage, etc executed via CircieCI\).
-Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository (not your personal repo) for approval, and check validations (e.g. unit tests, code coverage, etc executed via CircieCI).
+## Versioning of releases made for core Switch services
-# Versioning of releases made for core Switch services
This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
-### [Versioning Strategy](#versioning-strategy)
-### [Current versions](#current-version)
-### [Notes](#notes)
+#### [Versioning Strategy](standards.md#versioning-strategy)
+
+#### [Current versions](standards.md#current-version)
+
+#### [Notes](standards.md#notes)
+
+### Versioning Strategy
-## Versioning Strategy
1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
-2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment (PI) and Sprint numbers
-3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 (of PI-4)
+2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment \(PI\) and Sprint numbers
+3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 \(of PI-4\)
+
+### Current versions
-## Current versions
1. A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
2. At the time of writing this, active releases for core central services are as below
1. helm: v5.1.2
This document provides guidelines regarding the versioning strategy used for the
5. central-event-processor: v5.1.0
6. email-notifier: v5.1.0
-## Notes
-1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made (features, bug-fixes).
+### Notes
+
+1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made \(features, bug-fixes\).
2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
+
# Standards
+## Standards for adopting an Open Source contribution into Mojaloop
+This document provides guidelines regarding the adoption of a contribution to the Mojaloop Open Source repositories.
+
+### Prerequisites
+1. The contribution should be in-line with the LevelOne Principles
+2. Basic guidelines regarding status of the contribution (Code-base / Standards / Designs / Specifications)
+3. Basic documentation to get started
+
+### Guidelines regarding adoption
+1. Create a private repo on the Mojaloop GitHub organization
+2. Have a sub-team of the DA take a look to make sure its portable (to OSS) - aligns with L1P principles, etc, and ensure design is in line with standards
+3. Check Licensing
+4. Assess Performance impact
+5. Create action items (stories) to update naming, remove/sanitize any items that are not generic
+6. Configuration for 'modes of operation'
+7. Enable CI/CD pipeline
+
+
+# Creating new Features #
+
+## Fork ##
+
+Fork the Mojaloop repository into your own personal space.
+Ensure that you keep the `master` branch in sync.
+
+Refer to the following documentation for more information: https://help.github.com/articles/fork-a-repo/
+
+1. Clone repo using Git Fork button (refer to the above documentation for more information)
+
+2. Clone your forked repo: `git clone https://github.com//.git`
+
+3. Synchronise your forked repo with Mojaloop
+
+ Add a new upstream repo for Mojaloop `$ git remote add mojaloop https://github.com/mojaloop/.git`
+
+ You should now see that you have two remotes:
+ ```bash
+ git remote -v
+ origin https://github.com//.git (fetch)
+ origin https://github.com//.git (push)
+ mojaloop https://github.com/mojaloop/.git (fetch)
+ mojaloop https://github.com/mojaloop/.git (push)
+ ```
+4. To sync to your current branch: `git pull mojaloop `
+ This will merge any changes from Mojaloop's repo into your forked repo.
+
+5. Push the changes back to your remote fork: `git push origin `
+
+## Creating a Branch ##
+
+Create a new branch from the `master` branch with the following format:
+`/` where `issue#` can be attained from the Github issue, and the `issueDescription` is the formatted in CamelCase.
+
+1. Create and checkout the branch: `git checkout -b /`
+2. Push the branch to your remote: `git push origin /`
+
+Where `` can be one of the following:
+
+| branchType | Description |
+| ------------- | ------------- |
+| feature | Any new or maintenance features that are in active development. |
+| hotfix | A hotfix branch is for any urgent fixes. |
+| release | A release branch containing a snapshot of a release. |
+| backup | A temporary backup branch. Used normally during repo maintenance. |
+
+
+## Merge into Mojaloop Repo ##
+
+Once the feature is completed create a PR from your Feature Branch into the `master` branch on the Mojaloop repository (not your personal repo) for approval, and check validations (e.g. unit tests, code coverage, etc executed via CircieCI).
+
+# Versioning of releases made for core Switch services
+This document provides guidelines regarding the versioning strategy used for the releases of Mojaloop Open Source repositories corresponding to the Switch services.
+
+### [Versioning Strategy](#versioning-strategy)
+### [Current versions](#current-version)
+### [Notes](#notes)
+
+## Versioning Strategy
+1. The current versioning system is inspired by the [Semantic Versioning](https://semver.org/) numbering system for releases.
+2. However, this is customized to depict the timelines of the Mojaloop project, based on the Program Increment (PI) and Sprint numbers
+3. For example, the release number v5.1.0 implies that this release was the first one made during a Sprint 5.1, where Sprint5.1 is the first Sprint in PI-5. So for a version vX.Y.Z, X.Y is the Sprint number where X is the PI number and Z represents the number of release for this specific repository. Example v4.4.4 implies that the current release is the fourth of four releases made in Sprint 4.4 (of PI-4)
+
+## Current versions
+1. A new release for a repository is made when when a significant change such as a bug-fix is made or a new feature/functionality is added
+2. At the time of writing this, active releases for core central services are as below
+ 1. helm: v5.1.2
+ 2. central-ledger: v5.1.1
+ 3. ml-api-adapter: v5.1.0
+ 4. central-settlement: v5.1.1
+ 5. central-event-processor: v5.1.0
+ 6. email-notifier: v5.1.0
+
+## Notes
+1. A new release for **helm** repo is made whenver a configuration change is needed for any of the core Switch services based on the changes made (features, bug-fixes).
+2. However, if there is no release made to helm necessitated by a configuration change, then a release is done every Sprint anyway, to bring it up to date with the latest releases on the core Switch services.
description: Mojaloop Contributors Guide
### Review the Deployment and Standards Guide
-\[Deployment and Setup Document\]\([https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md\#11-deployment-recommendations](https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md#11-deployment-recommendations).md\)
-
-* \[Deployment Presentation\]\([https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop\_Phase2\_Wrap-up\_Deployment-Day3\_V2.0-published.pdf](https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop_Phase2_Wrap-up_Deployment-Day3_V2.0-published.pdf)\).
-* \[Mojaloop Standards\]
+\[Deployment and Setup Document\]\([https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md](https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md)\)
### What work is needed?
# Mojaloop Overview
-Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
-
Mojaloop is open-source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.
The intention is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
Mojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.
+Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
+
With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
# Mojaloop Overview
-## Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
+Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
Mojaloop is open-source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.
* [Mojaloop Overview](README.md)
* [Contributors Guide](contributors-guide/README.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
- * [Standards](contributors-guide/pre-requisites.md)
* [Documentation](contributors-guide/documentation.md)
+ * [Standards](contributors-guide/standards.md)
* [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
* [Repositories](mojaloop-technical-overview/repositories.md)
description: Mojaloop Contributors Guide
### Review the Deployment and Standards Guide
-* \[Deployment and Setup\]\([https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md](https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md)\).
-* \[Mojaloop Standards\]\([https://github.com/mojaloop/documentation/blob/master/contributors-guide/standards.md](https://github.com/mojaloop/documentation/blob/master/contributors-guide/standards.md)\)
+\[Deployment and Setup Document\]\([https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md\#11-deployment-recommendations](https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md#11-deployment-recommendations).md\)
+
+* \[Deployment Presentation\]\([https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop\_Phase2\_Wrap-up\_Deployment-Day3\_V2.0-published.pdf](https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop_Phase2_Wrap-up_Deployment-Day3_V2.0-published.pdf)\).
+* \[Mojaloop Standards\]
### What work is needed?
Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
### What is the current release?
-See the [Mojaloop Slack Announcements](https://mojaloop-slack.announcements) to find out information on the lastest release.
+See the [Mojaloop Slack Announcements](https://mojaloop-slack.announcements) to find out information on the latest release.
+
+The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
+
+* A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
+* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
+* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
+
+### What's here and what's not
+
+This is free code provided under an [Apache 2.0 license](https://github.com/mojaloop/mojaloop/blob/master/LICENSE.md).
+
+The code is released with an Apache 2.0 license but the Specification documents under the 'mojaloop-specification' documents are published with CC BY-ND 4.0 License
+
+We don't provide production servers to run it on. That's up to you. You are free \(and encouraged!\) to clone these repositories, participate in the community of developers, and contribute back to the code.
+
+We are not trying to replace any mobile wallet or financial providers. We provide code to link together new and existing financial providers using a common scheme. There are central services for identifying a customer's provider, quoting, fulfillment, deferred net settlement, and shared fraud management. Each provider can take advantage of these services to send and receive money with others on the system and there's no cost to them to onboard new providers. We provide code for a simple example mobile money provider to show how integration can be done, but our example DFSP is not meant to be a production mobile money provider.
+
+### Related Projects
-### Where to I send bugs, questions, and feedback?
+The [Interledger Protocol Suite](https://interledger.org/) \(ILP\) is an open and secure standard that enables DFSPs to settle payments with minimal _counter-party risk_ \(the risk you incur when someone else is holding your money\). With ILP, you can transact across different systems with no chance that someone in the middle disappears with your money. Mojaloop uses the Interledger Protocol Suite for the clearing layer. For an overview of how it works, see the [Clearing Architecture Documentation](https://github.com/mojaloop/Docs/blob/master/ILP/README.md).Where to I send bugs, questions, and feedback?
UPDATE: For bugs, see [Reporting bugs](https://github.com/mojaloop/mojaloop/blob/master/contribute/Reporting-Bugs.md).
description: Mojaloop Contributors Guide
## How do I contribute?
-### Review the Deployment Guide
+### Review the Deployment and Standards Guide
-Review the Mojaloop deployment guide and follow the instructions for deployment:
-
-* \[Deployment and Setup MD\]
-
- \([https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop\_Phase2\_Wrap-up\_Deployment-Day3\_V2.0-published.pdf](https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop_Phase2_Wrap-up_Deployment-Day3_V2.0-published.pdf)\).
+* \[Deployment and Setup\]\([https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md](https://github.com/mojaloop/docs/blob/master/MojaloopDeployment/MojaloopDeploymentGuide.md)\).
+* \[Mojaloop Standards\]\([https://github.com/mojaloop/documentation/blob/master/contributors-guide/standards.md](https://github.com/mojaloop/documentation/blob/master/contributors-guide/standards.md)\)
### What work is needed?
# Mojaloop Technical Overview
## Mojaloop Services
-The following architecture diagram shows the Mojaloop services:
-
-The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers (DFSPs) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
+The following architecture diagram shows the Mojaloop services: 
-- A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
-- A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
-- Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
+The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers \(DFSPs\) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
+
+* A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
+* A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
+* Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
+---
+description: Repository overview
+---
+
# Repositories
+The Mojaloop project is organized on the basis of component microservices. As such, there are over twenty different repositories in GitHub that align to the different services. The following four repositories are pinned to the project:
+
+* The [mojaloop repository](https://github.com/mojaloop/mojaloop) contains the master readme file along with the following documents to get started.
+* The [documentation repository](https://github.com/mojaloop/docs) documents the contributors guidelines, overall architecture, component design, message flow, and an overview of Mojaloop.
+* The [project repository](https://github.com/mojaloop/project) is the central repository to track product development issues for the Mojaloop project.
+* The [mojaloop-specificiation](https://github.com/mojaloop/mojaloop-specification) contains the specification document set of the Open API for Financial Service Provider Interoperability.
+
+Individual repositories in the [Mojaloop GitHub organization](https://github.com/mojaloop/) each describe component-specific details including source and APIs.
+
# Mojaloop Technical Overview
+## Mojaloop Services
+The following architecture diagram shows the Mojaloop services:
+
+
+The basic idea behind Mojaloop is that we need to connect multiple Digital Financial Services Providers (DFSPs) together into a competitive and interoperable network in order to maximize opportunities for poor people to get access to financial services with low or no fees. We don't want a single monopoly power in control of all payments in a country, or a system that shuts out new players. It also doesn't help if there are too many isolated subnetworks. Our model addresses these issues in several key ways:
+
+- A set of central services provides a hub through which money can flow from one DFSP to another. This is similar to how money moves through a central bank or clearing house in developed countries. Besides a central ledger, central services can provide identity lookup, fraud management, and enforce scheme rules.
+- A standard set of interfaces a DFSP can implement to connect to the system, and example code that shows how to use the system. A DFSP that wants to connect up can adapt our example code or implement the standard interfaces into their own software. The goal is for it to be as straightforward as possible for a DFSP to connect to the interoperable network.
+- Complete working open-source implementations of both sides of the interfaces - an example DFSP that can send and receive payments and the client that an existing DFSP could host to connect to the network.
+
* [Mojaloop Overview](README.md)
* [Contributors Guide](contributors-guide/README.md)
- * [Standards](contributors-guide/pre-requisites.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
-* [Documentation Standards](documentation-and-standards.md)
-* [Repositories](repositories.md)
-* [Mojaloop Technical Overview](mojaloop-technical-overview.md)
+ * [Standards](contributors-guide/pre-requisites.md)
+ * [Documentation](contributors-guide/documentation.md)
+ * [Frequently Asked Questions](contributors-guide/frequently-asked-questions.md)
+* [Mojaloop Technical Overview](mojaloop-technical-overview/README.md)
+ * [Repositories](mojaloop-technical-overview/repositories.md)
+ * [Mojaloop Components](mojaloop-technical-overview/mojaloop-components.md)
+# Frequently Asked Questions
+
+# Mojaloop Components
+
* [Contributors Guide](contributors-guide/README.md)
* [Standards](contributors-guide/pre-requisites.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
-* [Documentation and Standards](documentation-and-standards.md)
+* [Documentation Standards](documentation-and-standards.md)
* [Repositories](repositories.md)
* [Mojaloop Technical Overview](mojaloop-technical-overview.md)
* [Mojaloop Overview](README.md)
* [Contributors Guide](contributors-guide/README.md)
- * [Pre-Requisites](contributors-guide/pre-requisites.md)
+ * [Standards](contributors-guide/pre-requisites.md)
* [Tools and Technologies](contributors-guide/tools-and-technologies.md)
* [Documentation and Standards](documentation-and-standards.md)
* [Repositories](repositories.md)
description: Mojaloop Contributors Guide
---
-# How do I contribute?
-## Review the Deployment Guide
+# Contributors Guide
+
+## How do I contribute?
+
+### Review the Deployment Guide
+
Review the Mojaloop deployment guide and follow the instructions for deployment:
-* [Deployment and Setup MD]
-(https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop_Phase2_Wrap-up_Deployment-Day3_V2.0-published.pdf).
-## What work is needed?
-Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
+* \[Deployment and Setup MD\]
+
+ \([https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop\_Phase2\_Wrap-up\_Deployment-Day3\_V2.0-published.pdf](https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop_Phase2_Wrap-up_Deployment-Day3_V2.0-published.pdf)\).
+
+### What work is needed?
+
+Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
There's a [roadmap](https://github.com/mojaloop/mojaloop/blob/master/contribute/Roadmap.md) that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
-In general, we are looking for example implementations and bug fixes, and project enhancements.
+In general, we are looking for example implementations and bug fixes, and project enhancements.
+
+### Where do I get help?
-## Where do I get help?
Join the [Mojaloop Slack Discussions](https://mojaloop-slack.herokuapp.com/) to connect with other developers.
Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
-## What is the current release?
+### What is the current release?
+
See the [Mojaloop Slack Announcements](https://mojaloop-slack.announcements) to find out information on the lastest release.
-## Where to I send bugs, questions, and feedback?
-UPDATE: For bugs, see [Reporting bugs](https://github.com/mojaloop/mojaloop/blob/master/contribute/Reporting-Bugs.md).
+### Where to I send bugs, questions, and feedback?
+
+UPDATE: For bugs, see [Reporting bugs](https://github.com/mojaloop/mojaloop/blob/master/contribute/Reporting-Bugs.md).
+
+### Pull Request Process
-## Pull Request Process
It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
-## Style guides and templates UPDATE
-- [Documentation standards](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-and-Template-Standards.md)
-- [Documentation style guide](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-Style-Guide.md)
-- [Code Style](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Style.md)
-- [Code Quality Metrics](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Quality-Metrics.md)
+### Style guides and templates UPDATE
+* [Documentation standards](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-and-Template-Standards.md)
+* [Documentation style guide](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-Style-Guide.md)
+* [Code Style](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Style.md)
+* [Code Quality Metrics](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Quality-Metrics.md)
+
+### Code of conduct UPDATE
-## Code of conduct UPDATE
We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
-## Licensing
+### Licensing
+
See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
-## What version?
-Naturally, we use [semantic versioning](http://semver.org/), and each repo has it's own version.
-Update the version appropriately when you submit a pull request.
-Example: git tag v0.4.0 # update the version.
+### What version?
+
+Naturally, we use [semantic versioning](http://semver.org/), and each repo has it's own version. Update the version appropriately when you submit a pull request. Example: git tag v0.4.0 \# update the version.
+
+### Additional Information UPDATE
+
+For additional information please review the [frequently asked questions](https://github.com/mojaloop/documentation/tree/5c7ed2fbb64393b6d224e73d68351bff5b4bed4e/FAQ.md).
-## Additional Information UPDATE
-For additional information please review the [frequently asked questions](/FAQ.md).
+## Types of Contributors
-# Types of Contributors
There are three types of contributors that we are targeting for this phase of the Mojaloop project.
-## Developers or General Contributors
-These individuals are those that want to start contributing to the Mojaloop community. This could be a developer or quality assurance person that wants to write new code or fix a bug. This could also be a business, compliance or risk specialist that wants to help provide rules, write documentation or participate in requirements gathering.
+### Developers or General Contributors
+
+These individuals are those that want to start contributing to the Mojaloop community. This could be a developer or quality assurance person that wants to write new code or fix a bug. This could also be a business, compliance or risk specialist that wants to help provide rules, write documentation or participate in requirements gathering.
+
+### Hub Operators
-## Hub Operators
Typically these or organizations or individuals or goverment agencies that are interested in setting up their own Mojaloop Switch to become part of the ecosystem.
-## Implementation Teams
+### Implementation Teams
+
Implementation teams can assist banks, goverment offices, mobile operators or credit unions in deploying Mojaloop.
+
# Tools and Technologies
-Here we document the reasoning behind certain tools, technology and process choices for Mojaloop. We also have included the recommendation links/versions for each of these tools.
+Here we document the reasoning behind certain tools, technology and process choices for Mojaloop. We also have included the recommendation links/versions for each of these tools.
**TOOL CHOICES**
* **API Development**
* **RAML** and **Swagger 2.0** is leveraged for API development.
* **WSO2** offers an enterprise platform for integrating APIs, applications, and web services—locally and across the Internet. It also provides Mojaloop with a Security Layer, and Development Portal.
-
-* **Circle-CI** - This tool is used for continuous build and continuous deployment. We needed an online continuous build and testing system that can work with many small projects and a distributed team. Jenkins was considered, but it requires hosting a server and a lot of configuration. CircleCI allowed for a no host solution that could be started with no cost and very limited configuration. We thought we might start with CircleCI and move off later if we outgrew it, but that hasn’t been needed.
-
+* **Circle-CI** - This tool is used for continuous build and continuous deployment. We needed an online continuous build and testing system that can work with many small projects and a distributed team. Jenkins was considered, but it requires hosting a server and a lot of configuration. CircleCI allowed for a no host solution that could be started with no cost and very limited configuration. We thought we might start with CircleCI and move off later if we outgrew it, but that hasn’t been needed.
* **Dactyl** – We need to be able to print the online documentation. While it’s possible to print markdown files directly one at a time, we’d like to put the files into set of final PDF documents, where one page might end up in more than one final manual. [Dactyl](https://github.com/ripple/dactyl) is a maintained open source conversion tool that converts between markdown and PDF. We originally tried Pandoc, but it had bugs with converting tables. Dactyl fixes that and is much more flexible.
-
-* **DBeaver** - [DBeaver](https://dbeaver.io/) is a free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports all popular databases: MySQL, PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Derby, etc.
-
-* **Docker** - The Docker container engine creates and runs the Docker container from the Docker image file.
-
-* **Docker hub** is used to link, build, test and push the Mojaloop code repositories. We needed to support both local and cloud execution. We have many small microservices that have very simple specific configurations and requirements. The easiest way to guarantee that the service works the same way in every environment from local development, to cloud, to hosted production is to put each microservice in a Docker container along with all the prerequisites it needs to run. The container becomes a secure, closed, pre-configured, runnable unit.
-
-* **Draw.io** – We need to create pictures for our [documents and architecture diagrams](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines) using an (ideally free) open source friendly tool, that is platform agnostic, supports vector and raster formats, allows WYSIWYG drawing, works with markdown, and is easy to use. We looked at many tools including: Visio, Mermaid, PlantUML, Sketchboard.io, LucidChart, Cacoo, Archi, and Google Drawings. Draw.io scored at the top for our needs. It’s free, maintained, easy to use, produces our formats, integrates with DropBox and GitHub, and platform agnostic. In order to save our diagrams, we have to save two copies – one in SVG (scalable vector) format and the other in PNG (raster). We use the PNG format within the docs since it can be viewed directly in GitHub. The SVG is used as the master copy as it is editable.
-
-* **ESLint** - Within JavaScript code, we use [ESLint](https://eslint.org/) as a code style guide and style enforcement tool.
-
+* **DBeaver** - [DBeaver](https://dbeaver.io/) is a free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports all popular databases: MySQL, PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Derby, etc.
+* **Docker** - The Docker container engine creates and runs the Docker container from the Docker image file.
+* **Docker hub** is used to link, build, test and push the Mojaloop code repositories. We needed to support both local and cloud execution. We have many small microservices that have very simple specific configurations and requirements. The easiest way to guarantee that the service works the same way in every environment from local development, to cloud, to hosted production is to put each microservice in a Docker container along with all the prerequisites it needs to run. The container becomes a secure, closed, pre-configured, runnable unit.
+* **Draw.io** – We need to create pictures for our [documents and architecture diagrams](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines) using an \(ideally free\) open source friendly tool, that is platform agnostic, supports vector and raster formats, allows WYSIWYG drawing, works with markdown, and is easy to use. We looked at many tools including: Visio, Mermaid, PlantUML, Sketchboard.io, LucidChart, Cacoo, Archi, and Google Drawings. Draw.io scored at the top for our needs. It’s free, maintained, easy to use, produces our formats, integrates with DropBox and GitHub, and platform agnostic. In order to save our diagrams, we have to save two copies – one in SVG \(scalable vector\) format and the other in PNG \(raster\). We use the PNG format within the docs since it can be viewed directly in GitHub. The SVG is used as the master copy as it is editable.
+* **ESLint** - Within JavaScript code, we use [ESLint](https://eslint.org/) as a code style guide and style enforcement tool.
* **GitHub** – [GitHub](https://github.com/Mojaloop) is a widely-used source code repository service, based on git, the standard source code version control system for open source projects. So the decision to use GitHub was straightforward. We create a story every time for integration work. Create bugs for any issues. Ensure all stories are tracked throughout the pipeline to ensure reliable metrics.
-
* **Helm** - The Helm package manager for Kubernetes provides templatized deployments and configurations and allow for overall complexity management.
-
* **Kafka** - This technology is leveraged to support Mojaloop’s demand for a high velocity and high volume data messaging but keep our hardware requirements minimum.
-
* **JavaScript** - The Mojaloop application is primarily written in JavaScript.
-
-* **Kubectl** - This is a command line interface for running commands against Kubernetes clusters.
-
-* **Kubernetes** - This enterprise tool provides an extraction layer, infrastructure management and a container-orchestration system.
-
+* **Kubectl** - This is a command line interface for running commands against Kubernetes clusters.
+* **Kubernetes** - This enterprise tool provides an extraction layer, infrastructure management and a container-orchestration system.
* **Markdown** – Documentation is a deliverable for this project, just like the code, and so we want to treat it like the code in terms of versioning, review, check in, and tracking changes. We also want the documentation to be easily viewable online without constantly opening a viewer. GitHub has a built-in format called Markdown which solves this well. The same files work for the Wiki and the documents. They can be reviewed with the check in using the same tools and viewed directly in GitHub. We considered Google Docs, Word and PDF, but these binary formats aren’t easily diff-able. A disadvantage is that markdown only allows simple formatting – no complex tables or font changes - but this should be fine when our main purpose is clarity.
-
* **MySQLWorkbench** – [MySQL Workbench](https://www.mysql.com/products/workbench/) is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. MySQL Workbench is available on Windows, Linux and Mac OS X.
-
-* **NodeJS** - This development tool is a JavaScript runtime built on Chrome's V8 JavaScript engine that runs Mojaloop. NodeJS is designed to create simple microservices and it has a huge set of open source libraries available. Node performance is fine and while Node components don’t scale vertically a great deal, but we plan to scale horizontally, which it does fine. The original Interledger code was written in NodeJS as was the level one prototype. Most teams used Node already, so this made sense as a language. Within NodeJS code, we use [Standard](https://www.npmjs.com/package/standard) as a code style guide and to enforce code style.
-
-* **NPM** - NPM is the package manager for Mojaloop since JavaScript is the default programming language.
-
-* **Percona** for **MySQL** - These tools are leveraged as a relational database management system to ensure high performance and enterprise-grade functionality for the Mojaloop system. We needed a SQL backend that is open source friendly and can scale in a production environment. Thus, we chose MySQL, an open-source relational database management system.
-
-* **Postman** is a Google Chrome application for interacting with HTTP APIs. It presents you with a friendly GUI for constructing requests and reading responses.
-
-* **Rancher 2.0** - The Infrastructure management, provisioning and monitoring is provided by Rancher 2.0 which is an enterprise Kubernetes platform that manage Kubernetes deployments, clusters, on cloud & on-prem. Rancher makes it easy for DevOps teams to test, deploy and manage the Mojaloop system no matter where it is running.
-
-* **Slack** – Slack is used for internal team communication. This was largely picked because several team already used it and liked it as a lightweight approach compared to email.
-
-* **SonarQube** – We need an online dashboard of code quality (size, complexity, issues, and coverage) that can aggregate the code from all the repos. We looked at several online services (CodeCov, Coveralls, and Code Climate), but most couldn’t do complexity or even number of lines of code. Code Climate has limited complexity (through ESLint), but costs 6.67/seat/month. SonarQube is free, though it required us to setup and maintain our own server. It gave the P1 features we wanted.
-
-* **SourceTree** – [Sourcetree](https://www.sourcetreeapp.com/) simplifies how you interact with your Git repositories so you can focus on coding. Visualize and manage your repositories through Sourcetree's simple Git GUI.
-
-* **Stories On Board** - We use Stories on Board to help capture our high level Epics at a portfolio level before they are commmitted and moved to Github. Our Story Board for Mojaloop is located [here](https://mojaloop.storiesonboard.com/m/ml-phase3-planning)
-
-* **Visual Studio Code** - [Visual Studio Code](https://code.visualstudio.com/) is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
-
-* **ZenHub** – We needed a project management solution that was very light weight and cloud based to support distributed teams. It had to support epics, stories, and bugs and a basic project board. VS and Jira online offerings were both considered. For a small distributed development team an online service was better. For an open source project, we didn’t want ongoing maintenance costs of a server. Direct and strong GitHub integration was important. It was very useful to track work for each microservice with that microservice. Jira and VS both have more overhead than necessary for a project this size and don’t integrate as cleanly with GitHub as we’d want. ZenHub allowed us to start work immediately. A disadvantage is the lack of support for cumulative flow diagrams and support for tracking # of stories instead of points, so we do these manually with a spreadsheet updated daily and the results published to the "Project Management" Slack channel.
-
+* **NodeJS** - This development tool is a JavaScript runtime built on Chrome's V8 JavaScript engine that runs Mojaloop. NodeJS is designed to create simple microservices and it has a huge set of open source libraries available. Node performance is fine and while Node components don’t scale vertically a great deal, but we plan to scale horizontally, which it does fine. The original Interledger code was written in NodeJS as was the level one prototype. Most teams used Node already, so this made sense as a language. Within NodeJS code, we use [Standard](https://www.npmjs.com/package/standard) as a code style guide and to enforce code style.
+* **NPM** - NPM is the package manager for Mojaloop since JavaScript is the default programming language.
+* **Percona** for **MySQL** - These tools are leveraged as a relational database management system to ensure high performance and enterprise-grade functionality for the Mojaloop system. We needed a SQL backend that is open source friendly and can scale in a production environment. Thus, we chose MySQL, an open-source relational database management system.
+* **Postman** is a Google Chrome application for interacting with HTTP APIs. It presents you with a friendly GUI for constructing requests and reading responses.
+* **Rancher 2.0** - The Infrastructure management, provisioning and monitoring is provided by Rancher 2.0 which is an enterprise Kubernetes platform that manage Kubernetes deployments, clusters, on cloud & on-prem. Rancher makes it easy for DevOps teams to test, deploy and manage the Mojaloop system no matter where it is running.
+* **Slack** – Slack is used for internal team communication. This was largely picked because several team already used it and liked it as a lightweight approach compared to email.
+* **SonarQube** – We need an online dashboard of code quality \(size, complexity, issues, and coverage\) that can aggregate the code from all the repos. We looked at several online services \(CodeCov, Coveralls, and Code Climate\), but most couldn’t do complexity or even number of lines of code. Code Climate has limited complexity \(through ESLint\), but costs 6.67/seat/month. SonarQube is free, though it required us to setup and maintain our own server. It gave the P1 features we wanted.
+* **SourceTree** – [Sourcetree](https://www.sourcetreeapp.com/) simplifies how you interact with your Git repositories so you can focus on coding. Visualize and manage your repositories through Sourcetree's simple Git GUI.
+* **Stories On Board** - We use Stories on Board to help capture our high level Epics at a portfolio level before they are commmitted and moved to Github. Our Story Board for Mojaloop is located [here](https://mojaloop.storiesonboard.com/m/ml-phase3-planning)
+* **Visual Studio Code** - [Visual Studio Code](https://code.visualstudio.com/) is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
+* **ZenHub** – We needed a project management solution that was very light weight and cloud based to support distributed teams. It had to support epics, stories, and bugs and a basic project board. VS and Jira online offerings were both considered. For a small distributed development team an online service was better. For an open source project, we didn’t want ongoing maintenance costs of a server. Direct and strong GitHub integration was important. It was very useful to track work for each microservice with that microservice. Jira and VS both have more overhead than necessary for a project this size and don’t integrate as cleanly with GitHub as we’d want. ZenHub allowed us to start work immediately. A disadvantage is the lack of support for cumulative flow diagrams and support for tracking \# of stories instead of points, so we do these manually with a spreadsheet updated daily and the results published to the "Project Management" Slack channel.
**TECHNOLOGY CHOICES**
* **Agile development** - This methodology is used to track and run the project. The requirements need to be refined as the project is developed, therefore we picked agile development over waterfall or lean.
-
-* **APIs** - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our [Pragmatic REST](Pragmatic-REST-Guidelines.md) design pattern. APIs will be defined using [OpenAPI or RAML](/Docs/wiki/API-Documentation.md). Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
-
+* **APIs** - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our [Pragmatic REST](https://github.com/mojaloop/documentation/tree/98262a19e88513238ddd3d7ac70c8e791f622677/contributors-guide/Pragmatic-REST-Guidelines.md) design pattern. APIs will be defined using [OpenAPI or RAML](https://github.com/mojaloop/documentation/tree/98262a19e88513238ddd3d7ac70c8e791f622677/Docs/wiki/API-Documentation.md). Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines#second-round).
-
-* **Hosting** - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.
-
+* **Hosting** - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.
* **Interledger** – Mojaloop needed a lightweight, open, and secure transport protocol for funds. [Interledger.org](http://Interledger.org) provides all that. It also provides the ability to connect to other systems. We also considered block chain systems, but block chain systems send very large messages which will be harder to guarantee delivery of in third world infrastructure. Also, while blockchain systems provide good anonymity, that is not a project goal. To enable fraud detection, regulatory authorities need to be able to request records of transfers by account and person.
-
* **Open source** - The entire project has been released as open source in accordance with the [Level One Project principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf). All tools and processes must be open source friendly and support projects that use an Apache 2.0 license with no restrictive licenses requirements on developers.
-
* **Operating System** – Microsoft Windows is widely used in many target countries, but we need an operating system that is free of license fees and is open source compatible. We are using Linux. We don’t have a dependency on the particular flavor, but are using the basic Amazon Linux. In the Docker containers, [Alpine Linux](https://alpinelinux.org/) is used.
-
-* **Microservices** - Because the architecture needs to easily deploy, scale, and have components be easily replaced or upgraded, it will be built as a set of microservices.
-
-* **Scaled Agile Framework** - There were four initial development teams that are geographically separate. To keep the initial phase of the project on track, the [scaled agile framework (SAFe)](www.scaledagileframework.com) was picked. This means work is divided into program increments (PI) that are typically four 2 week sprints long. As with the sprints, the PI has demo-able objective goals defined in each PI meeting.
-
+* **Microservices** - Because the architecture needs to easily deploy, scale, and have components be easily replaced or upgraded, it will be built as a set of microservices.
+* **Scaled Agile Framework** - There were four initial development teams that are geographically separate. To keep the initial phase of the project on track, the [scaled agile framework \(SAFe\)](https://github.com/mojaloop/documentation/tree/98262a19e88513238ddd3d7ac70c8e791f622677/contributors-guide/www.scaledagileframework.com) was picked. This means work is divided into program increments \(PI\) that are typically four 2 week sprints long. As with the sprints, the PI has demo-able objective goals defined in each PI meeting.
* **Services** - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
+* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it. To achieve this we employ basic tried and true [modeling practices](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines#second-round).
+* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider \(DFSP\).
-* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it. To achieve this we employ basic tried and true [modeling practices](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines#second-round).
-
-* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider (DFSP).
description: Mojaloop Contributors Guide
---
-# Contributors Guide
+# How do I contribute?
+## Review the Deployment Guide
+Review the Mojaloop deployment guide and follow the instructions for deployment:
+* [Deployment and Setup MD]
+(https://github.com/mojaloop/docs/blob/develop/WorkShops/Presentations/Mojaloop_Phase2_Wrap-up_Deployment-Day3_V2.0-published.pdf).
+## What work is needed?
+Work is tracked as issues in GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.
+
+There's a [roadmap](https://github.com/mojaloop/mojaloop/blob/master/contribute/Roadmap.md) that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
+
+In general, we are looking for example implementations and bug fixes, and project enhancements.
+
+## Where do I get help?
+Join the [Mojaloop Slack Discussions](https://mojaloop-slack.herokuapp.com/) to connect with other developers.
+
+Also checkout the [FAQ](https://github.com/mojaloop/mojaloop/blob/master/FAQ.md)
+
+## What is the current release?
+See the [Mojaloop Slack Announcements](https://mojaloop-slack.announcements) to find out information on the lastest release.
+
+## Where to I send bugs, questions, and feedback?
+UPDATE: For bugs, see [Reporting bugs](https://github.com/mojaloop/mojaloop/blob/master/contribute/Reporting-Bugs.md).
+
+## Pull Request Process
+It's a good idea to ask about major changes on [Slack](https://mojaloop.slack.com). Submit pull requests which include both the change and the reason for the change. Pull requests will be denied if they violate the [Level One Principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf)
+
+## Style guides and templates UPDATE
+- [Documentation standards](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-and-Template-Standards.md)
+- [Documentation style guide](https://github.com/mojaloop/mojaloop/blob/master/contribute/Documentation-Style-Guide.md)
+- [Code Style](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Style.md)
+- [Code Quality Metrics](https://github.com/mojaloop/mojaloop/blob/master/contribute/Code-Quality-Metrics.md)
+
+
+## Code of conduct UPDATE
+We use a [standard developer code of conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html)
+
+## Licensing
+See [License](https://github.com/mojaloop/mojaloop/blob/master/contribute/License.md) policy
+
+## What version?
+Naturally, we use [semantic versioning](http://semver.org/), and each repo has it's own version.
+Update the version appropriately when you submit a pull request.
+Example: git tag v0.4.0 # update the version.
+
+## Additional Information UPDATE
+For additional information please review the [frequently asked questions](/FAQ.md).
+
+# Types of Contributors
There are three types of contributors that we are targeting for this phase of the Mojaloop project.
## Developers or General Contributors
-
These individuals are those that want to start contributing to the Mojaloop community. This could be a developer or quality assurance person that wants to write new code or fix a bug. This could also be a business, compliance or risk specialist that wants to help provide rules, write documentation or participate in requirements gathering.
## Hub Operators
+Typically these or organizations or individuals or goverment agencies that are interested in setting up their own Mojaloop Switch to become part of the ecosystem.
## Implementation Teams
-
+Implementation teams can assist banks, goverment offices, mobile operators or credit unions in deploying Mojaloop.
# Tools and Technologies
+Here we document the reasoning behind certain tools, technology and process choices for Mojaloop. We also have included the recommendation links/versions for each of these tools.
+
+**TOOL CHOICES**
+
+* **API Development**
+ * **RAML** and **Swagger 2.0** is leveraged for API development.
+ * **WSO2** offers an enterprise platform for integrating APIs, applications, and web services—locally and across the Internet. It also provides Mojaloop with a Security Layer, and Development Portal.
+
+* **Circle-CI** - This tool is used for continuous build and continuous deployment. We needed an online continuous build and testing system that can work with many small projects and a distributed team. Jenkins was considered, but it requires hosting a server and a lot of configuration. CircleCI allowed for a no host solution that could be started with no cost and very limited configuration. We thought we might start with CircleCI and move off later if we outgrew it, but that hasn’t been needed.
+
+* **Dactyl** – We need to be able to print the online documentation. While it’s possible to print markdown files directly one at a time, we’d like to put the files into set of final PDF documents, where one page might end up in more than one final manual. [Dactyl](https://github.com/ripple/dactyl) is a maintained open source conversion tool that converts between markdown and PDF. We originally tried Pandoc, but it had bugs with converting tables. Dactyl fixes that and is much more flexible.
+
+* **DBeaver** - [DBeaver](https://dbeaver.io/) is a free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports all popular databases: MySQL, PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Derby, etc.
+
+* **Docker** - The Docker container engine creates and runs the Docker container from the Docker image file.
+
+* **Docker hub** is used to link, build, test and push the Mojaloop code repositories. We needed to support both local and cloud execution. We have many small microservices that have very simple specific configurations and requirements. The easiest way to guarantee that the service works the same way in every environment from local development, to cloud, to hosted production is to put each microservice in a Docker container along with all the prerequisites it needs to run. The container becomes a secure, closed, pre-configured, runnable unit.
+
+* **Draw.io** – We need to create pictures for our [documents and architecture diagrams](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines) using an (ideally free) open source friendly tool, that is platform agnostic, supports vector and raster formats, allows WYSIWYG drawing, works with markdown, and is easy to use. We looked at many tools including: Visio, Mermaid, PlantUML, Sketchboard.io, LucidChart, Cacoo, Archi, and Google Drawings. Draw.io scored at the top for our needs. It’s free, maintained, easy to use, produces our formats, integrates with DropBox and GitHub, and platform agnostic. In order to save our diagrams, we have to save two copies – one in SVG (scalable vector) format and the other in PNG (raster). We use the PNG format within the docs since it can be viewed directly in GitHub. The SVG is used as the master copy as it is editable.
+
+* **ESLint** - Within JavaScript code, we use [ESLint](https://eslint.org/) as a code style guide and style enforcement tool.
+
+* **GitHub** – [GitHub](https://github.com/Mojaloop) is a widely-used source code repository service, based on git, the standard source code version control system for open source projects. So the decision to use GitHub was straightforward. We create a story every time for integration work. Create bugs for any issues. Ensure all stories are tracked throughout the pipeline to ensure reliable metrics.
+
+* **Helm** - The Helm package manager for Kubernetes provides templatized deployments and configurations and allow for overall complexity management.
+
+* **Kafka** - This technology is leveraged to support Mojaloop’s demand for a high velocity and high volume data messaging but keep our hardware requirements minimum.
+
+* **JavaScript** - The Mojaloop application is primarily written in JavaScript.
+
+* **Kubectl** - This is a command line interface for running commands against Kubernetes clusters.
+
+* **Kubernetes** - This enterprise tool provides an extraction layer, infrastructure management and a container-orchestration system.
+
+* **Markdown** – Documentation is a deliverable for this project, just like the code, and so we want to treat it like the code in terms of versioning, review, check in, and tracking changes. We also want the documentation to be easily viewable online without constantly opening a viewer. GitHub has a built-in format called Markdown which solves this well. The same files work for the Wiki and the documents. They can be reviewed with the check in using the same tools and viewed directly in GitHub. We considered Google Docs, Word and PDF, but these binary formats aren’t easily diff-able. A disadvantage is that markdown only allows simple formatting – no complex tables or font changes - but this should be fine when our main purpose is clarity.
+
+* **MySQLWorkbench** – [MySQL Workbench](https://www.mysql.com/products/workbench/) is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. MySQL Workbench is available on Windows, Linux and Mac OS X.
+
+* **NodeJS** - This development tool is a JavaScript runtime built on Chrome's V8 JavaScript engine that runs Mojaloop. NodeJS is designed to create simple microservices and it has a huge set of open source libraries available. Node performance is fine and while Node components don’t scale vertically a great deal, but we plan to scale horizontally, which it does fine. The original Interledger code was written in NodeJS as was the level one prototype. Most teams used Node already, so this made sense as a language. Within NodeJS code, we use [Standard](https://www.npmjs.com/package/standard) as a code style guide and to enforce code style.
+
+* **NPM** - NPM is the package manager for Mojaloop since JavaScript is the default programming language.
+
+* **Percona** for **MySQL** - These tools are leveraged as a relational database management system to ensure high performance and enterprise-grade functionality for the Mojaloop system. We needed a SQL backend that is open source friendly and can scale in a production environment. Thus, we chose MySQL, an open-source relational database management system.
+
+* **Postman** is a Google Chrome application for interacting with HTTP APIs. It presents you with a friendly GUI for constructing requests and reading responses.
+
+* **Rancher 2.0** - The Infrastructure management, provisioning and monitoring is provided by Rancher 2.0 which is an enterprise Kubernetes platform that manage Kubernetes deployments, clusters, on cloud & on-prem. Rancher makes it easy for DevOps teams to test, deploy and manage the Mojaloop system no matter where it is running.
+
+* **Slack** – Slack is used for internal team communication. This was largely picked because several team already used it and liked it as a lightweight approach compared to email.
+
+* **SonarQube** – We need an online dashboard of code quality (size, complexity, issues, and coverage) that can aggregate the code from all the repos. We looked at several online services (CodeCov, Coveralls, and Code Climate), but most couldn’t do complexity or even number of lines of code. Code Climate has limited complexity (through ESLint), but costs 6.67/seat/month. SonarQube is free, though it required us to setup and maintain our own server. It gave the P1 features we wanted.
+
+* **SourceTree** – [Sourcetree](https://www.sourcetreeapp.com/) simplifies how you interact with your Git repositories so you can focus on coding. Visualize and manage your repositories through Sourcetree's simple Git GUI.
+
+* **Stories On Board** - We use Stories on Board to help capture our high level Epics at a portfolio level before they are commmitted and moved to Github. Our Story Board for Mojaloop is located [here](https://mojaloop.storiesonboard.com/m/ml-phase3-planning)
+
+* **Visual Studio Code** - [Visual Studio Code](https://code.visualstudio.com/) is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
+
+* **ZenHub** – We needed a project management solution that was very light weight and cloud based to support distributed teams. It had to support epics, stories, and bugs and a basic project board. VS and Jira online offerings were both considered. For a small distributed development team an online service was better. For an open source project, we didn’t want ongoing maintenance costs of a server. Direct and strong GitHub integration was important. It was very useful to track work for each microservice with that microservice. Jira and VS both have more overhead than necessary for a project this size and don’t integrate as cleanly with GitHub as we’d want. ZenHub allowed us to start work immediately. A disadvantage is the lack of support for cumulative flow diagrams and support for tracking # of stories instead of points, so we do these manually with a spreadsheet updated daily and the results published to the "Project Management" Slack channel.
+
+
+**TECHNOLOGY CHOICES**
+
+* **Agile development** - This methodology is used to track and run the project. The requirements need to be refined as the project is developed, therefore we picked agile development over waterfall or lean.
+
+* **APIs** - In order to avoid confusion from too many changing microservices, we use strongly defined APIs that conform to our [Pragmatic REST](Pragmatic-REST-Guidelines.md) design pattern. APIs will be defined using [OpenAPI or RAML](/Docs/wiki/API-Documentation.md). Teams document their APIs with Swagger v2.0 or RAML v0.8 so they can automatically test, document, and share their work. Swagger is slightly preferred as there are free tools. Mule will make use of RAML 0.8. Swagger can be automatically converted to RAML v0.8, or manually to RAML v1.0 if additional readability is desired.
+
+* **Automated Testing** - For the most part, most testing will be automated to allow for easy regression. See the [automated testing strategy](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines#second-round).
+
+* **Hosting** - Mojaloop has been designed to be infrastructure agnostic and as such is supported by AWS, Azure and On-Premise installations.
+
+* **Interledger** – Mojaloop needed a lightweight, open, and secure transport protocol for funds. [Interledger.org](http://Interledger.org) provides all that. It also provides the ability to connect to other systems. We also considered block chain systems, but block chain systems send very large messages which will be harder to guarantee delivery of in third world infrastructure. Also, while blockchain systems provide good anonymity, that is not a project goal. To enable fraud detection, regulatory authorities need to be able to request records of transfers by account and person.
+
+* **Open source** - The entire project has been released as open source in accordance with the [Level One Project principles](https://leveloneproject.org/wp-content/uploads/2016/03/L1P_Level-One-Principles-and-Perspective.pdf). All tools and processes must be open source friendly and support projects that use an Apache 2.0 license with no restrictive licenses requirements on developers.
+
+* **Operating System** – Microsoft Windows is widely used in many target countries, but we need an operating system that is free of license fees and is open source compatible. We are using Linux. We don’t have a dependency on the particular flavor, but are using the basic Amazon Linux. In the Docker containers, [Alpine Linux](https://alpinelinux.org/) is used.
+
+* **Microservices** - Because the architecture needs to easily deploy, scale, and have components be easily replaced or upgraded, it will be built as a set of microservices.
+
+* **Scaled Agile Framework** - There were four initial development teams that are geographically separate. To keep the initial phase of the project on track, the [scaled agile framework (SAFe)](www.scaledagileframework.com) was picked. This means work is divided into program increments (PI) that are typically four 2 week sprints long. As with the sprints, the PI has demo-able objective goals defined in each PI meeting.
+
+* **Services** - Microservices are grouped and deployed in a few services such as the DFSP, Central Directory, etc. Each of these will have simple defined interfaces, configuration scripts, tests, and documentation.
+
+* **Threat Modeling, Resilience Modeling, and Health Modeling** - Since the Mojallop code needs to exchange money in an environment with very flaky infrastructure it must have good security, resilience, and easily report it's health state and automatically attempt to return to it. To achieve this we employ basic tried and true [modeling practices](https://github.com/mojaloop/Docs/wiki/Architecture-Documentation-Guidelines#second-round).
+
+* **USSD** - Smart phones are only 25% of the target market and not currently supported by most money transfer service, so we need a protocol that will work on simple feature phones. Like M-Pesa, we are using USSD between the phone and the digital financial service provider (DFSP).
+# Mojaloop Overview
+
+## Digital and mobile technologies make it possible to reach new customers in developing markets with innovative, low-cost financial services. The lack of a shared platform, though, means that financial providers have to build everything on their own. This raises costs and keeps the digital financial industry from growing and innovating as fast as it could.
+
+Mojaloop is open-source software for creating digital payments platforms that connect all customers, merchants, banks, and other financial providers in a country's economy. Rather than a financial product or application in itself, Mojaloop establishes a blueprint for technology that bridges all the financial products and applications in any given market.
+
+The intention is for financial institutions and commercial providers to use the open-source software to help build digital, interoperable payments platforms that drive financial inclusion on a national scale. Specifically, the platforms will enable seamless, low-cost transactions between individual users, merchants, banks, providers, and even government offices - helping connect poor customers with everyone else in the digital economy.
+
+Mojaloop grew out of principles set forth by the Financial Services for the Poor team at the Bill & Melinda Gates Foundation. These principles form the cornerstone of the Level One Project, which is the foundation's initiative for designing and implementing digital financial services and systems to include and benefit the world's 2 billion unbanked. The code won't address the gap in digital financial services on its own, but it can help service providers open markets and accelerate progress.
+
+With support and funding from the Bill & Melinda Gates Foundation, Mojaloop was designed by a team of leading tech and fintech companies: [Ripple](https://github.com/ripple), [Dwolla](https://github.com/dwolla), [ModusBox](http://www.modusbox.com/), [Software Group](http://www.softwaregroup-bg.com/) and [Crosslake Technologies](http://www.crosslaketech.com/). It is available now as an open-source project. Free to be used and adapted by anyone under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). For more information on how Mojaloop ties into the larger initiative of financial inclusion, visit [LevelOneProject.org](https://leveloneproject.org/).
+
+# Table of contents
+
+* [Mojaloop Overview](README.md)
+* [Contributors Guide](contributors-guide/README.md)
+ * [Pre-Requisites](contributors-guide/pre-requisites.md)
+ * [Tools and Technologies](contributors-guide/tools-and-technologies.md)
+* [Documentation and Standards](documentation-and-standards.md)
+* [Repositories](repositories.md)
+* [Mojaloop Technical Overview](mojaloop-technical-overview.md)
+
+---
+description: Mojaloop Contributors Guide
+---
+
+# Contributors Guide
+
+There are three types of contributors that we are targeting for this phase of the Mojaloop project.
+
+## Developers or General Contributors
+
+These individuals are those that want to start contributing to the Mojaloop community. This could be a developer or quality assurance person that wants to write new code or fix a bug. This could also be a business, compliance or risk specialist that wants to help provide rules, write documentation or participate in requirements gathering.
+
+## Hub Operators
+
+## Implementation Teams
+